![]() |
1
11
不同类型的异常的原因是,允许您使用处理程序只捕获所需的异常,从而让其他异常继续向上堆积。因此,您可以根据异常的类型,为某些偶尔会遇到的情况安排捕获异常。 实际上,您可能根本不需要经常创建自己的。但是如果你这样做了,那将是因为你需要能够抛出和捕获一个比可用的更具体的异常类型,也许还需要附加额外的信息。 |
![]() |
2
8
在以下情况下创建自定义异常非常有用:
但通常,如果框架中已经存在可以使用的异常,那么最好使用它,而不是为相同的事情创建自己的异常。 |
![]() |
3
6
您可以使用它为与您的应用程序相关的事情实现特殊的错误处理。假设您构建了一个香蕉应用程序,那么您可以
编辑:
编辑2:
|
![]() |
4
3
在.NET中只有少数例外以特殊方式处理,比如 ThreadAbortException 不能被抓住、处理和吞咽。 除此之外,异常类型只是异常类型。您可以对自己的异常执行与框架中定义的异常相同的操作。 |
![]() |
5
3
这里概述了自定义例外的好处,但在创建自己的例外之前,请确保BCL还没有一个适合您的需要: http://mikevallotton.wordpress.com/2009/07/08/net-exceptions-all-of-them/ (其中有141个!) |
![]() |
6
3
对内置异常的一个恼火之处是,没有系统地区分表示
根据捕获异常的位置,捕获异常并重新引发三个自定义异常(定义见上文)中的一个可能很有用。当异常为rethrown时,将原始异常作为innerException参数传递。 顺便说一下,可以定义一般的异常。我不太确定这样做的利弊,而且我从未见过其他人这样做。例如,可以定义从(自定义)TransientFaultException继承的TransientFaultException(属于T);捕获TimeoutException的应用程序可以作为TransientFaultException(属于TimeoutException)重新引发,并将其捕获为TransientFaultException(属于TimeoutException)或TransientFaultException。不幸的是,我们必须知道要学习的异常类型,才能创建合适的泛型。如果要捕获异常并将其传递给工厂方法进行TransientFaultException,则新异常的类型将为TransientFaultException(属于异常),而不考虑最初引发的异常类型。 |
![]() |
7
2
自定义异常允许您做两件事:
只有当没有需要处理的内置异常时,才应创建自定义异常。
例如,在我们的应用程序中
我们也有
|
|
lfox · 如果列中不存在某个值,则停止代码执行 2 年前 |
![]() |
zaen · 将值传递到异常字符串消息中 2 年前 |
![]() |
Zephyr · 如何在双ListView选择系统上实现过滤器? 6 年前 |
![]() |
Aave · 错误数组长度的特定异常 6 年前 |