catch 和 finally 一起使用的常见方式是:在 try 块中获取并使用资源,在 catch 块中处理异常情况,并在 finally 块中释放资源。
public class abc
{
static void Main1(string[] args)
{
try
{
//...
}
catch (ReStartupException e)
{
//...
}
catch (Exception ex)
{
//...
}
finally
{
//...
}
}
}
// 摘要:
// 系统应立即重启的异常
public class ReStartupException : Exception
{
public ReStartupException(string str);
}
首先你throw的话肯定直接往上抛了,抛到调用它的父函数里,假如父函数有异常处理的话就会抓住你抛上来的异常,至于交给那个catch处理的话那要看你的定义,假如你抛的是自定义了异常类型A,而你又指定了
try{}
catch(A ex)
{}
catch(B ex)
{}
catch(Exception ex)
{}
这样会交给第一个catch处理,因为你指定了A异常的处理方式,假如都不是你定义的话就会采用最后一个处理,因为Exception是所有异常的基类