处理例外情况

时间:2010-02-09 07:19:43

标签: c# exception-handling

我在一个代码库(C#3.5)中工作,当在一个返回'bool'的函数内部时,这个异常处理块会返回true / false。

catch (Exception ex) { return false; }

这是不正确的做法。我正在考虑记录异常,并且有一个将被初始化的局部变量(到函数)。并且,这个变量将在函数结束时返回。

您怎么看?

7 个答案:

答案 0 :(得分:4)

就个人而言,我会摆脱所有这些捕获块,并让异常在发生时冒泡。

正如您所说,使用应用程序逻辑的异常是不好的做法。

有一个catchall异常处理程序,它将捕获所有这些异常并记录它们并终止程序(如果这对该程序来说是正确的)。

答案 1 :(得分:4)

处理异常的通常可接受的方法是只有在你可以做某事的时候才能处理它们。你当然可以只为日志主题处理一个通用异常,但是你应该在完成后重新加载它。

您的应用程序逻辑不应该依赖异常。如果绝对没有办法做到这一点,那么至少要处理具体的例外而不是通用的......

答案 2 :(得分:1)

你想要的是非常主观的。

使用函数返回true / false值是旧的C风格代码,具体取决于函数是否成功。在C#世界中,抛出异常会更常见。

你可以辩论很长一段时间,这是选择你的代码库的正确途径。

我的一般观点是坚持例外,它们的优势在于它们起泡并且通常需要更少的代码。实际记录未捕获的异常也有很大的支持。

答案 3 :(得分:1)

您继承了原始程序员不想处理错误的代码。如上所述,程序只会出现故障(例如,不将记录保存到数据库中),并且无法找出故障原因。特别是因为这是dbase代码,这将导致随机数据损坏和丢失宝贵数据。

你确实无法保持代码的原样。您需要做的第一件事是删除所有try / catch语句,以便在出现错误时程序终止。添加AppDomain.UnhandledException事件处理程序以记录异常,以便您知道出了什么问题。通过更正代码或验证数据来修复您将遇到的错误。期望这需要时间,很可能你会发现许多设计问题,这些问题之前都被推到门垫下面。

答案 4 :(得分:0)

这肯定比你得到的更好!

答案 5 :(得分:0)

虽然我不建议使用bool返回值作为正确的异常处理,如果已经有很多代码以这种方式编写,那么在各地进行彻底的修改可能不是最好的主意。

答案 6 :(得分:0)

抛出异常通常比返回false更好 - 异常至少可以让接收者知道发生了什么以及失败发生的原因。

方法的返回值应该是方法的结果,或者它应该抛出一个异常,解释为什么无法完成所请求的操作。