我读到过抛出异常是一个开销很大的操作。但是,创建自己的异常难道不会使代码更具表现力和可读性吗?
我的一些同事建议您只使用System.Exception并将自定义文本插入到消息中,而不是创建新的自定义异常。
我对其他的观点很感兴趣。感谢您的建议。
发布于 2011-05-27 05:53:35
不要抛出System.Exception。永远不会。
它的问题在于调用代码。捕获一般的Exception对象是一种糟糕的做法,原因有很多。如果抛出Exception基类的一个实例,那么如果调用代码想要处理它,那么它们别无选择,只能捕获Exception。这迫使调用代码使用一种不好的做法。
此外,如果调用代码只得到Exception,那么它就没有可靠的方法来区分异常是什么。
通常最好使用一个预定义的例外(如果有) (ArgumentException、InvalidOperationException等)。如果没有一个正确地描述了这种情况,那么自定义异常类是一种非常好的方法。
发布于 2011-05-27 05:52:54
这是抛出异常本身的开销(创建对象、遍历堆栈等)。这是很昂贵的。创建你自己的异常类几乎不会增加任何开销,所以如果你要抛出一个异常,不要让它变成new Exception("message")!
发布于 2011-05-27 05:57:29
异常不是由人读取的(尽管它们的消息和堆栈跟踪是由人读取的),它们是由代码读取的。如果你的代码可以做一些事情来响应一个自定义的异常,那么一定要去做。但是这个异常注定要被记录下来,没有必要自定义一个。
自定义异常的开销在于它们是另一件需要维护和测试的事情。如果现有的异常是合适的,请改用它。(例如,用ArgumentNullException代替ZipCodeNullException。)
https://stackoverflow.com/questions/6145518
复制相似问题