社区
C#
帖子详情
ApplicationException和Exception
LMTZ
2006-04-07 11:50:52
为什么一些编码规范都推荐:
自定义异常继承自ApplicationException,
而不是直接从Exception继承?
...全文
1182
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
dnspy .net反编译软件
dnSpy是一款功能强大的.NET反编译工具,专为开发者和逆向工程爱好者设计。它提供了对.NET程序集的深入分析和编辑能力,使得用户能够查看并修改.NET应用程序的源代码,即使原始源代码不可用。这款软件的核心特性在于...
应用程序异常应用程序异常
其中`System.System
Exception
`是所有由公共语言运行时(CLR)引发的异常的基类,而`System.
Application
Exception
`则是`System.
Exception
`的一个子类,用于表示应用程序级别的异常。 #### 四、构造函数 `...
C# 捕获C/C++异常的例子
throw new
Application
Exception
("C++异常: " + ex.ErrorMessage, new
Exception
(ex)); } } catch (
Application
Exception
appEx) { // 处理C++异常 } catch (
Exception
ex) { // 处理其他C#异常 } ``` 在这里,...
c# 异常处理
开发者在创建自定义异常时,应该从`
Application
Exception
`或`
Exception
`派生,而不是`System
Exception
`,因为捕获和重新抛出`System
Exception
`通常不是良好的编程实践。 C#支持基于异常对象和受保护代码块的异常...
编程命名规范.doc
- 派生类的名称通常包含基类的部分,如`
Application
Exception
`从`
Exception
`派生。 4. 接口命名 - 接口名可以是名词或描述行为的形容词,如`IComponent`或`IEnumerable`。 - 使用首字母大写样式,并以"I"为前缀...
C#
110,953
社区成员
642,597
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章