日期:2008-03-31  浏览次数:20389 次

你可以查一下你的SDK,里面有很多的Exception的定义,其基类其实都是System.Exception一样。
但System.Exception只提供了一些一般异常的处理。更多的需要专业的来处理。

比如找不到文件,你必须捕捉System.IO.FileNotFoundException这个异常。
在一段代码中,你如果既进行了找文件、找路径、找数据库那你很可能抛出四个异常,即System.Exception、System.IO.FileNotFoundException、System.IO.DirectorNotFoundException、System.Data.SqlClicent.SqlException(以上名字纯凭记忆写出,可能有错,自己查一下)。你在程序中需要对此一一捕捉,才能找到正确的错误信息。
当然,如果你坚信自己的代码没有问题,比如你找路径是找的C盘根目录,那么基本上不会有问题,那么你可以不去捕捉这个异常。双比如一般的System.Exception大家也不进行特意捕捉的。
比如你说的,你只捕捉System.Exception,
如下:
try{
   [openDataBaseCode]
}
catch(System.Exception e)
{
   MessageBox.show("错误:"+e.Message,"系统错误");
}
如果你的代码中打开数据库确实出错了,那程序是捕捉不到的,所以你必须再加上一个
catch(System.Data.SqlClient.SqlException e)
{
    MessageBox.show("错误:"+e.Message,"数据库错误");

}
另外,我使用的System.Data.OleDb操作数据库的类,所以我不会调用System.Data.Sqlclient.SqlException这个错误。
这样明白了吗?