正确使用自定义异常

本文关键字:自定义异常 | 更新日期: 2023-09-27 17:54:27

我正在创建一个函数,并希望它能够在遇到错误时给出有意义的错误消息。

我想问一下这种情况是否正确使用了自定义异常,如果不是,有什么合适的方法来处理它。

的例子:

int res = a - b;
if (res < 0)
throw new MyCustomeExp("Invalid input. 'a' should be larger than 'b'.");

使用自定义异常是否合适?

谢谢。

正确使用自定义异常

在极少数情况下应该使用自定义异常。

你的第一个过滤器应该是"我要去catch (MyCustomExc x)任何地方吗?"如果答案是否定的,你就不需要定制了。答案可能有点棘手,这取决于你如何记录事情,你的catch可能根本不是一个捕获,而是一个触发器在你的应用程序之外的某个地方(例如:发送一个电子邮件当一些异常被记录)

第二个过滤器是检查有没有合适的和比较通用的。如果有标准的,就用它。

第三个过滤器——你真的需要一个异常吗?还是应该向调用者返回一些东西?

如果你仍然想要一个自定义异常,那么考虑它应该继承什么,并确保只有总是使用你的自定义异常的情况下,它的意思-不要来回与通用异常

您也可以使用Trace.Assert():

int a = 42
int b = 56
Trace.Assert ( a > b );
...