我想实现当有异常时,就捕获异常码~  如果异常码不对时候就执行最后的finally
可我的代码没有捕获异常呀~~  
try
{
………………
}
catch (OracleException ex)
{
if (ex.Code == 20101)
{
string strtmp = ex.Message;
strtmp = strtmp.Split(':')[1].Split('!')[0] ;
conn.Alert(strtmp,Page);
return;
}
}
finally
{
conn.Alert("操作错误请与管理员联系!",Page);
}

解决方案 »

  1.   

    在catch中有return;  当函数执行到return;函数终止 跳出
      

  2.   

    不太明白你的意思,不过需要说明的是,不论是否抛出异常,程序都回去执行你的finally语句块。即使在catch里有return语句,同样会执行finally语句块,而且不抛出异常也会执行。
      

  3.   

    你捕获的是OracleException类型的异常,如果出现的异常不是这类型的,当然会捉不到了。以前有过这样的经历,但不知道你的是不是。
      

  4.   

    无论程序是否异常,finally{}段都会被执行,所以你的程序没有异常也会提示"操作错误请与管理员联系!"。正确的写法是:try
    {
    }
    catch (OracleException ex)
    {
      if (ex.Code == 20101)
      {
        string strtmp = ex.Message;
        strtmp = strtmp.Split(':')[1].Split('!')[0] ;
        conn.Alert(strtmp,Page);
        //return;  不用返回
      }
      else
        conn.Alert("操作错误请与管理员联系!",Page);
    }
    finally
    {
      //执行关闭数据库等操作。
    }