[英]I Need Try Catch Use, Exception Handling and Refactoring Advice
我是否应该经常使用try catch块,以及如何确定最需要它们的时间和地点? 另外,如果在中小型部门业务应用程序中按惯例捕获异常,该怎么办? 还有免费的工具来帮助我查找重复的代码或最适合重构食物链的代码吗? 我有ReSharper,它很棒,但我需要一些帮助我分析需要重构的内容。
谢谢。
仅当您可以纠正错误,正在捕获以便在重新抛出(例如,数据库回滚)之前执行清除,或者在顶级catch中捕获崩溃之前记录异常时,才应使用Try..catch块。
您永远不应默默地吞下异常-从那时起,您的应用程序可能处于不一致状态,并且您不能信任它。 最好使用日志记录信息使之崩溃。 考虑将Microsoft的崩溃报告服务也用于调试和统计目的。
只有在我可以对异常做一些有意义的事情时,我才能捕捉到异常。 让通用异常上升到应用程序级别并在那里进行处理。 这样,您可以将所有错误处理都集中在一个位置以进行日志记录等。
仅当您要对catch部分进行一些有用的操作时,才能使用try-catch。 如果您要做的只是释放资源,则可以最终尝试使用(是的...没有麻烦)。 默认的异常处理是抛出它。 因此,也许您想要记录它然后将其扔掉。
您的代码应如下所示
try{
... //do something
}
catch(Exception e){
//log first
throw
}
finally{
//free up resources.
}
明智的工具...最好在类模式下查看代码,然后按类进行重构。 这应该更多地是设计上的考虑,而不是事后的考虑。
好吧,在处理异常时,我经常将3条规则用作最佳实践:
您应该在已识别出可能发生的异常行为并且知道如何处理的代码周围放置try ... catch块。 正如您已经确定的行为,这些应针对特定的例外。 绝对不要使用它们来抑制错误。
如果您希望记录异常,则将try..catch块放在较高的级别很有用。 Log 4 .Net是一个很好的工具。 在中型公司中,您可能希望在发生异常时给某人发送电子邮件,或将其存储在数据库中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.