读书人

关于错误处理的简单有关问题

发布时间: 2013-02-05 10:40:57 作者: rapoo

关于异常处理的简单问题
public void Test()
{
try{
fun1();
fun2();
fun3();
fun4();

catch(Exception ex)

Console.WriteLine(ex.Message);


}
客户端调用Test方法,是不是只要在Test方法加个总异常捕获,fun1,fun2,..就不用进行异常处理?(fun1,fun2……不处理细节异常)。
[解决办法]
可以这样做,如果你在fun1,fun2....里面处理了异常而没有throw的话,你Test方法中反而不能try到异常了,这就是常说的把异常吞掉了。
更多的做法是这样,在底层方法(fun1,fun2...)中捕获异常,并把底层的系统异常转化为业务异常并throw,然后上层捕获并处理业务异常。

比如fun1,fun2...是数据库操作的方法,在这个方法中可能会出现sql语句错误。


void fun1()
{
try
{
//操作数据库
}
catch (Exception ex)
{
//或使用自定义异常
throw new Exception("数据库操作错误!");
}
}

这样你可以在Test方法中继续捕获异常,显示在界面上。
因为很多时候操作数据库出现的异常会暴露数据库表名、列名等危险信息,不适合直接显示到界面上去。

读书人网 >.NET Framework

热点推荐