【问题标题】:Exception Throwing Best Practice异常抛出最佳实践
【发布时间】:2013-11-20 17:04:08
【问题描述】:

在定义异常时,您应该为可能发生的每种错误类型或可用于多种错误情况的更一般的异常设置单独的异常。

例如,假设我有一个处理字符串的类,如果字符串格式不正确,我想抛出异常。

我会创建单独的异常,例如:

StringTooLongException、StringContainsIllegalCharactersException、StringTerminationException

或者只创建一个异常,例如

字符串格式异常

并在异常中使用错误代码指示更具体的异常?

【问题讨论】:

  • 如果可能,我会尽量坚持框架提供的异常。例如,在你的具体例子中,我会使用这个:System.FormatException.
  • 最佳实践是尽可能使用与您的异常最接近的现有异常类型。如果您必须偏离,则创建异常是特定的,但不是那么具体,以至于开发人员需要捕获一千个异常。记住例外是昂贵的!所以他们应该是例外

标签: c# exception


【解决方案1】:

这取决于。异常的接收者可以根据类型采取任何有用的行动吗?那么是的,有不同的类型会很好。如果他所能做的只是向用户显示错误消息,那么不同的 .NET 类型没有用,如果有些东西没有用,就不应该这样做。

【讨论】:

    【解决方案2】:

    .Net 框架中有很多现有的“通用”异常类型,例如,System.IO.IOException 涵盖了很多可能的 IO 错误,System.Data.SqlClient.SqlException 用于报告许多不同类型的 Sql 错误,所以我会说可以使用更通用的异常类型,最好是已经存在的异常类型(不要重新发明轮子)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-02
      • 2011-06-13
      • 1970-01-01
      • 2011-12-24
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      相关资源
      最近更新 更多