C# 中 try{...... try{} catch{a;} } catch {b;} 里面try抛出异常,执行a语句后,会不会直接执行b语句
展开全部
不会。这里有个总结,你可以看看:
static void Main(string[] args)
{
/* 嵌套try块
* try
* {
* //A
* try
* {
* //B
* }
* catch
* {
* //C
* }
* finally
* {
* //D
* }
* //E
* }
* catch
* { ... }
* finally
* { ... }
*
* 抛出异常在:内层A,E处由外层catch块捕获,并执行外层finally
* 抛出异常在:内层B处,且有一合适内层catch捕获,执行内层finally,后执行E处
* 抛出异常在:内层B处,但内层catch块没有合适处理程序,执行内层finally,搜索外层catch,找合适的,执行外层finally,此时不会执行E
* 抛出异常在:内层C处,退出内层catch块,执行内层finally,搜索外层catch,找到合适,执行外层finally
* 抛出异常在:内层D处,退出内层finally块,搜索外层catch,找到合适,执行外层finally
*/
/* 使用嵌套块的原因:
* 1.修改所抛出的异常类型
* 2.在代码的不同地方处理不同类型的异常
*/
}
展开全部
楼上说的不对,catch{a;}已经把异常处理了,catch {b;}捕获不到新的异常,除非catch{a;}内部又重新把异常throw出来。
楼主不信可以用下面这段代码测试,只会输出ex1,不会输出ex2。
try
{
try
{
string str = string.Empty;
int n = Convert.ToInt32(str);
}
catch
{
Console.WriteLine("ex1" );
}
}
catch
{
Console.WriteLine("ex2" );
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-01-23
展开全部
会。。
catch 是捕获异常。对应a的一个异常,b的一个异常。如果触发a异常则会进去a catch,同样 ,就会进入B catch。
catch 是捕获异常。对应a的一个异常,b的一个异常。如果触发a异常则会进去a catch,同样 ,就会进入B catch。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-01-23
展开全部
应该不会。内部异常直接处理了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询