繁体   English   中英

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

[英]ASP.NET - When to use custom exceptions?

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

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

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

更新

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

Web应用程序

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

构架

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

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

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

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

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

让我们分解异常的使用:

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

“我无法继续”

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

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

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

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

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

例如, TextWriterWriteLine方法可以抛出以下异常:

ArgumentNullException
ObjectDisposedException
IOException
FormatException

想象一下,如果该方法只抛出Exception则使用您的代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM