首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

问一个关于try catch finally的有关问题

2013-01-20 
问一个关于try catch finally的问题问一个关于try {}catch{} finally{}的问题, 如果 try中有return,那么fi

问一个关于try catch finally的问题
问一个关于try 
{}
catch
{}
 finally
{}
的问题, 如果 try中有return,那么finally里的语句是否会执行?
[解决办法]
会。。。。。。。
[解决办法]
会。。。。。。。。。。。。。。
[解决办法]
引用这个帖子

http://stackoverflow.com/questions/421797/what-really-happens-in-a-try-return-x-finally-x-null-statement

static int Test() {
    try {
        return SomeNumber();
    } finally {
        Foo();
    }
}

被编译为
.method private hidebysig static int32 Test() cil managed
{
    .maxstack 1
    .locals init (
        [0] int32 CS$1$0000)
    L_0000: call int32 Program::SomeNumber()
    L_0005: stloc.0 
    L_0006: leave.s L_000e
    L_0008: call void Program::Foo()
    L_000d: endfinally 
    L_000e: ldloc.0 
    L_000f: ret 
    .try L_0000 to L_0008 finally handler L_0008 to L_000e
}
其实你可以看出,在IL层面,事实上,它只是把返回值送到运算栈的顶端,而ret是在finally之后的。
[解决办法]
try 
{
//try必须执行,但可能报错,报错就中断跳到catch中
}
catch
{
//如果try块中代码报错就执行
}
finally
{
//无论如何都要执行,没有任何形式可以中断。
}
[解决办法]

引用:
try 
{
//try必须执行,但可能报错,报错就中断跳到catch中
}
catch
{
//如果try块中代码报错就执行
}
finally
{
//无论如何都要执行,没有任何形式可以中断。
}
++
[解决办法]
一定会!!!!
[解决办法]
会。。。
在return之前执行
[解决办法]
顾名思义的!
[解决办法]
 在finally里面你写一个打印字符串程序看看就知道了...
[解决办法]
finally 是必须要执行的
[解决办法]
引用:
会。。。
在return之前执行


+1

热点排行