C# 中 finally 的用法


當一個異常拋出時,它會改變程序的執行流程。因此不能保證一個語句結束后,它后面的語句一定會執行,在 C# 中這個問題可以用 finally 解決。

為了確保一個語句總是能執行(不管是否拋出異常),需要將該語句放到一個 finally 塊中,finally 要么緊接在 try 塊之后,要么緊接在 try 塊之后的最后一個 catch 處理程序之后。

只要程序進入與一個 finally 塊關聯的 try 塊,則 finally 塊始終都會運行 -- 即使發生了一個異常。

代碼如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace CheckedAndUnchecked
{
    class Program
    {
        static void Main(string[] args)
        {
            {
                try
                {
                    int a;
                    string b;
 
                    Console.WriteLine("請輸入一個整數");
                    b = Console.ReadLine();
                    a = int.Parse(b);
                }
 
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                }
 
                finally
                {
                    Console.WriteLine("finally塊內總是能運行到");   // 總是能執行到這里
                }
            }
        }
    }
}

因為 try 會捕捉異常,在此處輸入 1.0,格式不正確,則 runtime 會捕捉到異常,但 finally 塊內的代碼卻始終會執行。

 執行后結果如下:

 

如果一個異常被拋出,且在本地捕捉到,則首先運行異常處理程序,然后運行 finally 塊;

如果異常未能在本地捕捉到,則首先運行 finally 塊,再去上一級搜索一個匹配的異常處理程序並運行。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM