为什么没有触发catch块?

时间:2013-03-07 01:57:10

标签: c# asp.net exception

我正在尝试将错误记录到文件中,但我似乎无法在发生错误时运行catch块。以下是代码示例:

try  
{  
     cmd.ExecuteNonQuery();  
}  
catch (MySQLException ex)  
{   
     //run some logging code  
}  
finally  
{  
     //clean up the resources  
}  

问题是当出现异常时,我从内置的web服务器抛出了一个未处理的异常错误。当我调试代码停止在异常时,然后继续到finally块。有人能指出我在正确的方向吗?

3 个答案:

答案 0 :(得分:10)

ExecuteNonQuery()会抛出SqlException类型的异常。

所以我不确定MySQLException是什么,但你需要抓住SqlException

请查看此信息以获取更多信息:

答案 1 :(得分:1)

抛出的异常似乎不是类型MySQLException或从它派生的任何异常。所以catch块永远不会捕获它,finally块直接执行!

要检查引发的异常类型,请将代码修改为:

try  
{  
   cmd.ExecuteNonQuery();  
}  
catch (MySQLException ex)  
{   
   //run some logging code  
}  
catch (Exception ex)
{
   // any other exception will be handled here
}
finally  
{  
   //clean up the resources  
} 

答案 2 :(得分:0)

That method can throw different types of exceptions

  • InvalidCastException的
  • SQLEXCEPTION
  • IOException的
  • 出现InvalidOperationException
  • 的ObjectDisposedException