ASP.NET - 何时使用自定义异常?

时间:2010-09-06 19:03:40

标签: c# asp.net exception

嘿那里,我一遍又一遍地听到我应该总是在我的网络应用程序中使用自定义异常。问题是,当他们全部在global.asax中处理时,我没有看到任何制作自定义异常的原因(无论如何写入数据库等。那我为什么要使用它们呢?

4 个答案:

答案 0 :(得分:3)

我几乎从不使用自定义异常。当我手动抛出异常时,我会提供详细的消息。

我发现维护例外不值得麻烦。

<强>更新

让我们把它放到上下文中。问题是,是否有人应该在Web应用程序中创建自定义例外。我认为这是一个基本的crud应用程序。

Web应用程序

在Web应用程序中,您几乎不需要自定义异常。正在将数据写入数据库,并从数据库中读取数据。然后由某种UI消耗数据:MVC,WPF,WebForms ......等。在这样的应用程序中,没有机会进行自定义异常。每个应用程序都不同,因此会有例外 ...

框架

框架是一种完全不同的动物。作为框架开发人员,您的工作是提供错误发生原因的可见性。我希望框架中的冗长异常,也许是自定义的,也许不是。我希望有足够的信息来解决错误。

正如@Wyatt Barnett指出的那样,一个新的异常应该提供更多东西,这是现有类无法做到的。

我会创建自定义异常的原因

  1. 传达更详细和具体的信息 关于错误。
  2. 为了提供捕获此错误条件的方法(即'FileNotFoundExeception',这允许在更高层进行业务决策。)

答案 1 :(得分:3)

我认为,对于制作自己的自定义异常而不仅仅是使用具有描述性错误的标准异常类型而言,这就是需要向异常添加更多数据的地方。 EG,想象一下你有一个导入例程而不是仅仅在你得到损坏的数据时抛出一个InvalidOperationException,你可以抛出一个ImporterException并在所述异常中包含导入的行号和原始数据吗?

答案 2 :(得分:2)

让我们分解异常的使用:

当我们的例程遇到这种情况时,我们抛出异常:

  

“我无法继续”

当我们的例程遇到这种情况时,我们抛出一个特定的BCL异常:

  

“我无法继续,其中一个更具体的BCL异常类型描述了确切原因(即FileNotFoundException)”

当我们的例程遇到这种情况时,我们抛出一个自定义异常类型:

  

“我无法继续,因为没有任何BCL例外可以准确地向感兴趣的各方描述”

答案 3 :(得分:0)

对于使用您正在编写的类的代码,为给定的异常或问题设置适当的异常类非常重要。

示例,TextWriter的{​​{3}}方法可能会抛出以下异常:

ArgumentNullException
ObjectDisposedException
IOException
FormatException

如果该方法只会抛出Exception,请设想您的代码。