在我们实际开发过程中,一个程序总是调用了很多的方法来实现各种业务需求,我们无法预料到会不会有什么莫名其妙的原因导致某个方法出现异常,同时又觉得这一次异常不应该导致整个程序无法继续运行下去,那么我们会使用try-catch代码块。
如果你是个经验老道的开发者,那么你肯定写过或者是见过只在try里面编写代码,却不在catch里做任何处理的try-catch块。
像是这样:
try
{
SyncNewMessage(oprNo, model);
}
catch (Exception e) { }
这么写的目的是为了保证程序继续运行,但是开发者评估这个SyncNewMessage方法无关紧要,或是出现异常的可能性非常低,所以懒得处理或抛出异常,这就是所谓的当异常发生时,就直接将异常吃到肚子里去。
但是事无绝对,哪怕是一个只执行了简单Insert语句的方法,也可能某一天数据自增列Id达到最大值(20多亿)溢出了,如果你们的项目里没有完善的异常处理方案与警报,那么你很难知晓这个方法已经无法正常执行了。
所以哪怕你只是记录个日志,也比什么都不做要保险的多。当然你还可以选择更详细的抛出异常
try
{
SyncNewMessage(oprNo,model);
}
catch(Exception e)
{
AddNewExceptionLog($"异常信息:{JsonConvert.SerializeObject(e)}") //自定义的记录日志方法
}
catch (IOException e)
{
///IO异常,通知当前用户
}
catch (UnauthorizedAccessException e)
{
权限异常,通知客户端管理员
}
catch (CommunicationException e)
{
///网络异常,通知发送给网络管理员
}