我们可以用自定义异常做什么?

Nam*_* VU 8 .net c# exception

我不知道我们可以用自定义异常做什么,我们用内置异常做什么.这似乎是一个天真的问题,但我真的不知道这一点.你怎么看?

And*_*ber 11

不同类型的异常的原因是允许您能够使用处理程序捕获您想要的那些,让其他人继续处理堆栈.因此,您可以根据异常的类型安排捕获特定的,偶尔预期的情况的异常.

实际上,您可能根本不需要经常创建自己的.但是如果你这样做,那将是因为你需要能够抛出和捕获比可用的更具体的异常类型,并且可能附加了附加信息.

  • 顺便说一句:如果你想在现有的Exception中附加更多信息,你也可以在其上使用(鲜为人知的).Data属性(参见http://blog.abodit.com/2010/03/using-exception-data-to -add-附加信息到一个的异常/) (2认同)

Mar*_*ers 8

在以下情况下创建自定义异常非常有用:

  • 没有内置异常表示您拥有的错误条件类型.
  • 您只想捕获特定类型的异常,而不是来自框架的异常.

但通常如果框架中已经存在可以使用的异常,那么最好使用它而不是为同一个东西创建自己的异常.


Alb*_*nbo 6

您可以使用它来实现与应用程序相关的特殊错误处理.假设您构建了一个香蕉应用程序,那么您可以拥有一个OutOfBananasException.如果您的应用程序没有香蕉,您可以抛出异常并在以后通过特殊错误处理捕获它.

try
{
    EatBananas();
}
catch(OutOfBananasException oobe)
{
    GetMoreBananas();
}
catch(Exception e)
{
    TellUserAndAbort();
}
Run Code Online (Sandbox Code Playgroud)

编辑:
使用您自己的异常而不是内置的原因是为了让每个人都清楚地阅读您的代码或使用您的库发生了什么类型的错误.只有在找不到合适的内置异常时,才应创建自己的异常.

Edit2:
你可以用你自己的内置做的事情做的一件事就是添加描述错误处理程序可能使用的错误条件的属性.如果您有与客户相关的例外,则您的例外可能具有客户名称和客户ID的属性,从而使错误处理程序可以向用户显示信息性错误消息.

  • 今天早上,当我坐下吃麦片时,我正在抛出这个例外!呵呵 (2认同)