54

ではC#、try catch finally ブロックはどのように機能しますか?

したがって、例外が発生した場合は、catch ブロックにジャンプしてから、finally ブロックにジャンプすることがわかっています。

しかし、エラーがなければ catch ブロックは実行されませんが、finally ブロックは実行されますか?

4

6 に答える 6

53

はい、例外の有無にかかわらず、finally ブロックが実行されます。

試す
    [トライステートメント]
    [ トライを終了 ]
[ キャッチ [ 例外 [ タイプとして ] ] [ When 式 ]
    [キャッチステートメント]
    [ 試行を終了 ] ]
[キャッチ...]
[ ついに
    [ finallyStatements ] ] --RUN ALWAYS
エンドトライ

参照: http://msdn.microsoft.com/en-us/library/fk6t46tz%28v=vs.80%29.aspx

于 2012-11-24T20:25:10.103 に答える
13

はい、例外がない場合、finally 句が実行されます。例を挙げる

     try
        {
            int a = 10;
            int b = 20;
            int z = a + b;
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
        finally
        {
            Console.WriteLine("Executed");
        }

したがって、ここで例外が発生すると、finally も実行されます。

于 2012-11-24T20:34:15.247 に答える
0
        try
        {
            //Function to Perform
        }
        catch (Exception e)
        {
         //You can display what error occured in Try block, with exact technical spec (DivideByZeroException)
            throw; 
            // Displaying error through signal to Machine, 
            //throw is usefull , if you calling a method with try from derived class.. So the method will directly get the signal                
        }

        finally  //Optional
        {
            //Here You can write any code to be executed after error occured in Try block
            Console.WriteLine("Completed");
        }
于 2014-12-16T05:14:56.080 に答える