健壮的程序并不是没有异常,而是能够处理异常和定位异常!
为了提供系统的健壮性,我们在写程序时,必须同时关注提供的正面行为和反面行为,并给出不同的处理方法! 要学会习惯性的处理异常情况!!
以下是一点点建议,欢迎补充。
1. 不要吞掉异常情况,要学会习惯处理异常情况,即要考虑正面和负面情况
绝对不要吞掉异常情况,虽然这样子写程序很省事,但是,一旦问题出现了,也让你很麻烦。吞掉异常的情况一般有:
(1)使用try…catch…,然后不做任何异常处理,这种情况下,所有异常都被忽视掉了,对于写代码来说是非常省事,但是问题出现后,压根无法找到那出错了。
try
{
}
catch
{
// Ignore the exceptions
}
{
}
catch
{
// Ignore the exceptions
}
(2)使用try…catch,只是笼统处理,这里处理方式要好于第一种,但是程序并没有根据捕捉的不同异常类型而给出不同处理方法,虽然能够定位大概原因,但是无法精确,因此这个方法还是存在问题。
try
{
}
catch(Exception ex)
{
// Show the ex.Message here.
}
{
}
catch(Exception ex)
{
// Show the ex.Message here.
}
(3)只处理正面条件,这种方法和(1)情况类似,当然动机不一样,在这种情况下,写程序时是做了程序正常的假设,而不考虑异常。
if(pageFlowService !=
null && !
string.IsNullOrEmpty(pageFlowService.FirstPageNodeValue))
{
Response.Redirect(pageFlowService.FirstPageNodeValue);
}
{
Response.Redirect(pageFlowService.FirstPageNodeValue);
}
2. 引入日志
这里日志,最好不要使用Log.Message/Error(sting message)的处理方法,因为这样的日志并没有办法准确描述是在那个线程、那个类、那个方法产生的结果。因此,我提倡直接使用log4net的日志。
3 程序进行模块化分解
这种方法可以把依赖限制在一个功能模块里面,因此,异常的范围也可以进一步限制起来,从而有助于更好的定位问题的根源。
欢迎大家多多补充。