在维护我同事的代码时,甚至有人声称自己是高级开发人员,我经常看到以下代码:
try
{
//do something
}
catch
{
//Do nothing
}
或者有时他们将日志信息写入日志文件,例如下面的try catch块
try
{
//do some work
}
catch(Exception exception)
{
WriteException2LogFile(exception);
}
我只是想知道他们所做的是不是最好的做法?这让我很困惑,因为在我看来,用户应该知道系统发生了什么。
我可以告诉你:
代码片段#1是不可接受的,因为它忽略了异常。(它像什么都没发生一样吞下去)。
所以不要添加不做任何事情或只是重新抛出的catch块。
Catch块应该增加一些价值。例如,向最终用户输出消息或记录错误。
不要对正常的流程序逻辑使用异常。例如:
例如输入验证。<-这不是有效的例外情况,而是你应该写方法IsValid(myInput);检查输入项是否有效。
设计代码以避免异常。例如:
int Parse(string input);
如果我们传递一个不能解析为int的值,这个方法会抛出一个异常,我们可以这样写:
bool TryParse(字符串输入,输出int结果);<-该方法将返回布尔值,表示解析是否成功。
也许这有点超出了这个问题的范围,但我希望这将帮助您在涉及try {} catch(){}和异常时做出正确的决定。
我可以告诉你:
代码片段#1是不可接受的,因为它忽略了异常。(它像什么都没发生一样吞下去)。
所以不要添加不做任何事情或只是重新抛出的catch块。
Catch块应该增加一些价值。例如,向最终用户输出消息或记录错误。
不要对正常的流程序逻辑使用异常。例如:
例如输入验证。<-这不是有效的例外情况,而是你应该写方法IsValid(myInput);检查输入项是否有效。
设计代码以避免异常。例如:
int Parse(string input);
如果我们传递一个不能解析为int的值,这个方法会抛出一个异常,我们可以这样写:
bool TryParse(字符串输入,输出int结果);<-该方法将返回布尔值,表示解析是否成功。
也许这有点超出了这个问题的范围,但我希望这将帮助您在涉及try {} catch(){}和异常时做出正确的决定。