我会认为大多数用户定义的例外是业务逻辑电平异常,但什么是使用用户定义的异常一些很好的理由,什么是一些很好的例子吗?

是一个用户定义的异常的唯一好处是可以定义一致的错误消息?

什么逻辑可以写里面的例外,使他们真正更有用?

毕竟,你就不能做到这一点:throw new Exception("Some Error Message");

有帮助吗?

解决方案

拥有用户自定义异常,因为它可以让你处理各种错误的具体方式是非常有用的。为什么.NET定义这么多不同类型的异常,如果他们只是把所有异常的System.Exception为具有不同的短信?有不同类型的.NET异常的原因是,你可以捕捉各个类型的错误的和不同的方式处理它们。这就是你需要定义自己的用户异常同样的原因 - 这样就可以提供基于异常的发生的类型不同的反应。

您还可以创建用户定义的异常,其包括附加数据。例如,你可以定义一个基于枚举,整数错误代码或其他任何可能的调用程序,以确定什么地方出了错有用的严重性级别。至于逻辑在例外情况包括,我一般只是尽量报告什么地方出了错,离开逻辑(怎么办)中的错误给调用程序。在一些情况下,我有异常代码自动写入错误日志文件,如果它已经超过了一定程度的水平(例如警告抛出但只有严重错误被写入到日志文件)。

其他提示

您应该创建很少有用户定义的异常。如果有人要捕获异常,并做一些具体的吧,他们应该只被使用。如果你抛出异常,而不是InvalidOperationException不会使代码行为不同,则抛出InvalidOperationException

有已经在.NET框架中,如果你能找到一个可以用于你的特殊情况下,你应该使用相当多的异常。

例如,在我的配置类(其通常围绕ConfigurationManager包装)我扔ConfigurationErrorsException当过的值不能被正确地解析。

当从一个需要specfic格式的文本或别的东西解析自定义值和分析失败时,我抛出一个FormatException

但是,如果我BankAccount对象没有足够的钱对我有退出£10,然后我会写,并抛出InsufficentFundsException因为当时这样我可以处理该错误的情况下,如果发生过它。

希望这(有点)帮助。

没有,它们不仅对消息。你可以寻找一个catch块的例外列表中用户自定义的。

catch(UserDefinedException){}
catch(Exception){}

您可以使用用户定义的异常,只要你愿意寻找那些发生什么具体的。也许一个客户端ID超出规定范围的,你想寻找一个特别。而不必解析错误消息(可以是一个痛苦,而且容易出错,就像如果消息后改变的道路),你必须使用一个例外,你知道的代码,别的地方是专门讲的你“嘿,这事。你必须意识到这一点。”

用户定义的异常可以在组件中使用,以允许消费者组件的捕捉它们与粒度更大的电平,那么赶上(例外)嵌段的能力。这将提供部分消费者与执行不同的任务,在此基础上异常被抛出的能力。用户自定义异常应该只有当有一个真正的期望,消费者会使用它们以这种方式来区分真正的创建。

可以还(调用非托管API时例如)添加属性来存储附加的元数据与用户定义的异常,比如一个错误代码。这是更加用户友好的不是简单地把东西进入异常对象的数据属性。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top