我需要尝试捕获使用,异常处理和重构建议

时间:2009-12-11 22:07:19

标签: c# asp.net

我应该经常使用try catch块吗?如何确定我最需要它的时间和地点?当它被作为中小规模部门业务应用程序的常规做法捕获时,该怎么办?还有一个免费的工具,以帮助我找到重复代码或代码,这将是重构食物链的理想选择吗?我有ReSharper,它很棒,但我需要一些东西来帮助我分析需要重构的内容。

感谢。

5 个答案:

答案 0 :(得分:7)

Try..catch块只应在您可以修复错误时使用,以便在重新抛出之前执行清理(即数据库回滚),或者在崩溃之前在顶级catch中记录异常。

你永远不应该默默地吞下异常 - 从那时起你的应用程序可能处于不一致的状态,你不能相信它。最好用记录信息来解决问题。考虑使用Microsoft的崩溃报告服务以及调试和统计目的。

答案 1 :(得分:2)

当我能用他们做一些有意义的事情时,我只会抓住我的异常。 让一般异常冒泡到应用程序级别并在那里处理它。这样,您就可以在一个位置进行所有错误处理以进行日志记录等。

答案 2 :(得分:1)

只有当你要对catch部分做一些有用的事情时,才能使用

try-catch。如果你要做的只是释放资源,你可以使用try-finally(是的......没有捕获)。默认的异常处理是抛出它。所以,也许你想记录它然后抛出它。

您的代码应该是

try{
... //do something
}
catch(Exception e){
//log first
throw 
}
finally{
//free up resources.
}

工具明智......你最好在类模式下查看代码并按类重构它。这应该更多地是设计考虑而不是事后的想法。

答案 3 :(得分:0)

嗯,在处理异常时,我总是使用3条规则作为最佳做法:

  • 尽可能接近抛出异常的代码
  • 当你真正能够处理它时,只能捕获异常。这只涉及捕获真正特定类型的异常。永远不会捕获您在普通代码中无法处理的异常,因为这对您没有好处。
  • 拥有一个全局异常处理程序来捕获我无法处理的所有异常,用于记录异常并关闭应用程序。

答案 4 :(得分:0)

你应该在代码中放置try ... catch块,你已经识别出可能发生的异常行为,并且你知道如何处理。在确定行为后,这些行为应针对特定的例外情况。永远不应该使用它们来抑制错误。

如果您希望记录异常,则将try..catch块置于高级别非常有用。 Log 4 .Net是一个很好的工具。在中型公司中,您可能希望在发生异常时向某人发送电子邮件,或将其存储在数据库中。