社区
C#
帖子详情
ApplicationException和Exception
LMTZ
2006-04-07 11:50:52
为什么一些编码规范都推荐:
自定义异常继承自ApplicationException,
而不是直接从Exception继承?
...全文
1122
4
打赏
收藏
ApplicationException和Exception
为什么一些编码规范都推荐: 自定义异常继承自ApplicationException, 而不是直接从Exception继承?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
LMTZ
2006-04-13
打赏
举报
回复
又看了番茄的引用,有了新的理解:
(1)ApplicationException 由用户程序抛出,也就是说要在代码中编写
throw ApplicationException。
这个类是为了区别CLR抛出的异常而设计的,
所以根据这一原则,我们定义自己的异常类的时候要从ApplicationException继承。
(2)SystemException 由CLR抛出,例如数组越界,类型转换错误等,都会被此异常捕捉,
因为InvalidCastException、InvalidOperationException等异常都是继承于
SystemException的。
所以程序中按照以下这样写就可以了----
try
{
......
}
catch (ApplicationException appEx)
{
MessageBox.Show(appEx.Message);
}
catch (SystemException sysEx)
{
MessageBox.Show(sysEx.Message);
}
LMTZ
2006-04-10
打赏
举报
回复
听了以上两位的解释,我的理解是:
这两个类在功能上是相同的,只是意义上不同,相当于.Net为我们自定义了一个用于应用程序的异常类。
.Net内部代码的实现类似于:
class ApplicationException : Exception
{
public ApplicationException() : base() {}
public ApplicationException(string message) : base(message) {}
public ApplicationException(string message, Exception innerException
) : base(message, innerException) {}
protected ApplicationException(SerializationInfo info, StreamingContext context) : base(info, context) {}
}
我的理解正确吗?
jiezhi
2006-04-07
打赏
举报
回复
ApplicationException只是简单地从Exception继承过来的,没有添加任何东西,它只是表示一个含义罢了。所以推荐从这里继承,定义自己的异常类
chenxi6713
2006-04-07
打赏
举报
回复
常用的异常就是两大类,一种是SystemException预定义的公共语言运行库异常类的基类,另外就是ApplicationException用户定义的应用程序异常类型的基类。
ApplicationException 由用户程序引发,而不是由公共语言运行库引发。如果打算设计需要创建自己的异常的应用程序,请从 ApplicationException 类派生。ApplicationException 扩展 Exception,但不添加新功能。此异常作为一种区分应用程序定义的异常与系统定义的异常的方法而提供。
参考微软的http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/exceptdotnet.asp
imageformats-master.rar
C# 处理小众图片源码,是从源码库下载 imageformats,放在此是为了自己以后学习方便,希望你也能尽快处理好,我耽误了两天。欢迎留言交流! public static string LoadPgmFile(string fileName) { try { var bmp = BitmapExtensions.Load(fileName); if (bmp == null) { try { bmp = (Bitmap)Bitmap.FromFile(fileName); } catch (
Exception
e) { Debug.WriteLine(e.Message); } } if (bmp == null) throw new
Application
Exception
("Failed to convert pictures"); MemoryStream ms = new MemoryStream(); bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); byte[] arr = new byte[ms.Length]; ms.Position = 0; ms.Read(arr, 0, (int)ms.Length); ms.Close(); return Convert.ToBase64String(arr); } catch (
Exception
e) { return e.ToString(); } }
C#自定义异常类型的方法和注意项
C#中的异常都是从System
Exception
(系统异常)和
Application
Exception
(应用程序异常)两个类派生而来, 在自定义异常类时通常都是从
Application
Exception
派生,只有在开发.NETFramework的扩展类库时才考虑从System
Exception
派生。 在定义自己的派生异常类时通常要注意一下几点: 一:如果你的异常是需要写入文件的,如日志等,则需要将异常类声明为可序列化的[Serializable] 二:要实现一个无参数的构造函数,因为可能会抛出无参异常 三:实现一个包含message的构造函数 四:实现一个包含me
javax.ejb.jar
Files contained in javax.ejb.jar: META-INF/MANIFEST.MF javax.ejb.AccessLocal
Exception
.class javax.ejb.AccessTimeout.class javax.ejb.ActivationConfigProperty.class javax.ejb.AfterBegin.class javax.ejb.AfterCompletion.class javax.ejb.
Application
Exception
.class javax.ejb.Asynchronous.class javax.ejb.AsyncResult.class javax.ejb.BeforeCompletion.class javax.ejb.ConcurrencyManagement.class javax.ejb.ConcurrencyManagementType.class javax.ejb.ConcurrentAccess
Exception
.class javax.ejb.ConcurrentAccessTimeout
Exception
.class javax.ejb.Create
Exception
.class javax.ejb.DependsOn.class javax.ejb.DuplicateKey
Exception
.class javax.ejb.EJB.class javax.ejb.EJBAccess
Exception
.class javax.ejb.EJBContext.class javax.ejb.EJB
Exception
.class javax.ejb.EJBHome.class javax.ejb.EJBLocalHome.class javax.ejb.EJBLocalObject.class javax.ejb.EJBMetaData.class javax.ejb.EJBObject.class javax.ejb.EJBs.class javax.ejb.EJBTransactionRequired
Exception
.class javax.ejb.EJBTransactionRolledback
Exception
.class javax.ejb.embeddable.EJBContainer.class javax.ejb.EnterpriseBean.class javax.ejb.EntityBean.class javax.ejb.EntityContext.class javax.ejb.Finder
Exception
.class javax.ejb.Handle.class javax.ejb.HomeHandle.class javax.ejb.IllegalLoopback
Exception
.class javax.ejb.Init.class javax.ejb.Local.class javax.ejb.LocalBean.class javax.ejb.LocalHome.class javax.ejb.Lock.class javax.ejb.LockType.class javax.ejb.MessageDriven.class javax.ejb.MessageDrivenBean.class javax.ejb.MessageDrivenContext.class javax.ejb.NoMoreTimeouts
Exception
.class javax.ejb.NoSuchEJB
Exception
.class javax.ejb.NoSuchEntity
Exception
.class javax.ejb.NoSuchObjectLocal
Exception
.class javax.ejb.ObjectNotFound
Exception
.class javax.ejb.PostActivate.class javax.ejb.PrePassivate.class javax.ejb.Remote.class javax.ejb.RemoteHome.class javax.ejb.Remove.class javax.ejb.Remove
Exception
.class javax.ejb.Schedule.class javax.ejb.ScheduleExpression.class javax.ejb.Schedules.class javax.ejb.SessionBean.class javax.ejb.SessionContext.class javax.ejb.SessionSynchronization.class javax.ejb.Singleton.class javax.ejb.spi.EJBContainerProvider.class javax.ejb.spi.HandleDelegate.class javax.ejb.Startup.class javax.ejb.Stateful.class javax.ejb.StatefulTimeout.class javax.ejb.Stateless.class javax.ejb.TimedObject.class javax.ejb.Timeout.class javax.ejb.Timer.class javax.ejb.TimerConfig.class javax.ejb.TimerHandle.class javax.ejb.TimerService.class javax.ejb.TransactionAttribute.class javax.ejb.TransactionAttributeType.class javax.ejb.TransactionManagement.class javax.ejb.TransactionManagementType.class javax.ejb.TransactionRequiredLocal
Exception
.class javax.ejb.TransactionRolledbackLocal
Exception
.class javax.interceptor.AroundInvoke.class javax.interceptor.AroundTimeout.class javax.interceptor.ExcludeClassInterceptors.class javax.interceptor.ExcludeDefaultInterceptors.class javax.interceptor.Interceptor.class javax.interceptor.InterceptorBinding.class javax.interceptor.Interceptors.class javax.interceptor.InvocationContext.class javax.xml.rpc.handler.GenericHandler.class javax.xml.rpc.handler.Handler.class javax.xml.rpc.handler.HandlerChain.class javax.xml.rpc.handler.HandlerInfo.class javax.xml.rpc.handler.HandlerRegistry.class javax.xml.rpc.handler.MessageContext.class
javax.ejb.rar
文档中包含如下: META-INF / LICENSE.txt META-INF / MANIFEST.MF META-INF / maven / org.glassfish.main.ejb / javax.ejb / pom.properties META-INF / maven / org.glassfish.main.ejb / javax.ejb / pom.xml javax.ejb.AccessLocal
Exception
.class javax.ejb.AccessTimeout.class javax.ejb.ActivationConfigProperty.class javax.ejb.AfterBegin.class javax.ejb.AfterCompletion.class javax.ejb.
Application
Exception
.class javax.ejb.AsyncResult.class javax.ejb.Asynchronous.class javax.ejb.BeforeCompletion.class javax.ejb.ConcurrencyManagement.class javax.ejb.ConcurrencyManagementType.class javax.ejb.ConcurrentAccess
Exception
.class javax.ejb.ConcurrentAccessTimeout
Exception
.class javax.ejb.Create
Exception
.class javax.ejb.DependsOn.class javax.ejb.DuplicateKey
Exception
.class javax.ejb.EJB.class javax.ejb.EJBAccess
Exception
.class javax.ejb.EJBContext.class javax.ejb.EJB
Exception
.class javax.ejb.EJBHome.class javax.ejb.EJBLocalHome.class javax.ejb.EJBLocalObject.class javax.ejb.EJBMetaData.class javax.ejb.EJBObject.class javax.ejb.EJBTransactionRequired
Exception
.class javax.ejb.EJBTransactionRolledback
Exception
.class javax.ejb.EJBs.class javax.ejb.EnterpriseBean.class javax.ejb.EntityBean.class javax.ejb.EntityContext.class javax.ejb.Finder
Exception
.class javax.ejb.Handle.class javax.ejb.HomeHandle.class javax.ejb.IllegalLoopback
Exception
.class javax.ejb.Init.class javax.ejb.Local.class javax.ejb.LocalBean.class javax.ejb.LocalHome.class javax.ejb.Lock.class javax.ejb.LockType.class javax.ejb.MessageDriven.class javax.ejb.MessageDrivenBean.class javax.ejb.MessageDrivenContext.class javax.ejb.NoMoreTimeouts
Exception
.class javax.ejb.NoSuchEJB
Exception
.class javax.ejb.NoSuchEntity
Exception
.class javax.ejb.NoSuchObjectLocal
Exception
.class javax.ejb.ObjectNotFound
Exception
.class javax.ejb.PostActivate.class javax.ejb.PrePassivate.class javax.ejb.Remote.class javax.ejb.RemoteHome.class javax.ejb.Remove.class javax.ejb.Remove
Exception
.class javax.ejb.Schedule.class javax.ejb.ScheduleExpression.class javax.ejb
简洁的Net程序开发指导
一.项目架构 3 1.技术点扩展和改进 4 2.Asp.Net MVC框架 4 二. 编码及数据库命名规则 5 1.几种常用的命名规则 5 1.1. Pascal 规则 5 1.2. Camel 规则 5 1.3. Upper 规则 5 2.命名指导 5 2.1.名称 5 2.2.区分大小写 5 2.3.缩写 6 2.4.类命名指导 6 2.5.接口命名指导 7 2.6.枚举命名指导 7 2.7.只读及常量变量命名 7 2.8.参数及非常量变量命名 7 2.9.简单循环变量命名 7 2.10.方法命名 7 2.11.属性命名 8 2.12.事件命名 8 2.13.大小写规范总结 8 2.14.数据库命名 8 3.常用控件命名规则附表 9 4.变量命名规则 10 三.编码指导 10 1.文件组织 10 1.1. C#源文件 10 1.2.目录结构 10 2.排版 11 2.1.换行 11 2.2.Tab缩进 11 3.恰当的代码注释 11 3.1.块注释 11 3.2.单行注释 12 3.3.注释文档 12 3.4.复杂的逻辑注释 12 3.5.注释技巧 13 4.定义 15 4.1.每行定义数 15 4.2.初始化 15 4.3.类及接口的定义 15 5.语句 16 5.1.简单语句 16 5.2.返回值语句 16 6.合理使用空行和空格 16 6.1.空行 16 6.2.类部空格 16 四.版本管理 17 1.项目版本管理 17 2.类文件和方法版本控制指导 17 3.部署实施方案 18 4.建立公共代码库 18 五.日志记录规范 19 1.日志级别 19 2.异常处理(
Exception
) 19 2.1.System
Exception
19 2.2.
Application
Exception
19 2.3.异常处理的方法技巧 20 3.日志书写 20
C#
110,577
社区成员
642,559
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章