Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我需要Try-Catch使用、异常处理和重构建议_C#_Asp.net - Fatal编程技术网

C# 我需要Try-Catch使用、异常处理和重构建议

C# 我需要Try-Catch使用、异常处理和重构建议,c#,asp.net,C#,Asp.net,我是否应该经常使用try-catch块,以及如何确定何时何地最需要它们?此外,在中小型部门业务应用程序中,当it作为一种正常做法被发现时,应该如何处理异常?还有没有一个免费的工具来帮助我找到重复的代码或是重构食物链的理想代码?我有ReSharper,它很棒,但我需要一些东西来帮助我分析哪些东西需要重构 谢谢。Try..catch块只应在您可以修复错误、正在捕获以便在重试之前执行清理(即数据库回滚)或在顶级捕获中记录崩溃之前的异常时使用 您永远不应该默默地接受异常——从那时起,您的应用程序可能处于

我是否应该经常使用try-catch块,以及如何确定何时何地最需要它们?此外,在中小型部门业务应用程序中,当it作为一种正常做法被发现时,应该如何处理异常?还有没有一个免费的工具来帮助我找到重复的代码或是重构食物链的理想代码?我有ReSharper,它很棒,但我需要一些东西来帮助我分析哪些东西需要重构


谢谢。

Try..catch块只应在您可以修复错误、正在捕获以便在重试之前执行清理(即数据库回滚)或在顶级捕获中记录崩溃之前的异常时使用


您永远不应该默默地接受异常——从那时起,您的应用程序可能处于不一致的状态,您不能信任它。最好使用日志记录信息进行硬崩溃。考虑使用微软的崩溃报告服务以及调试和统计的目的。

< P>,在处理异常时,我总是使用3条规则作为最佳实践:

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

只有当我可以对异常做一些有意义的事情时,我才能捕捉到异常。
让常规异常冒泡到应用程序级别并在那里处理。通过这种方式,您可以将所有错误处理放在一个位置进行日志记录等。

您应该在代码周围放置try…catch块,在这些块中您已经识别出可能发生的异常行为,并且知道如何处理。正如您已经确定的行为,这些行为应该针对特定的异常。决不能使用它们来抑制错误


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

只有在您打算对catch部分执行一些有用的操作时,才能使用try catch。如果您要做的只是释放资源,那么您可以使用try finally(是的……没有捕获)。默认的异常处理是抛出它。所以,也许你想把它记录下来然后扔掉

您的代码应该如下所示

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

工具方面。。。您最好在类模式下查看代码并按类进行重构。这应该更多地是一种设计考虑,而不是事后考虑。

我建议花一些时间阅读MSDN的最佳实践建议:例外情况的设计指南。这不是频率问题,而是以有意义和一致的方式使用它们。