C# try catch嵌套


try catch嵌套之后出現異常執行順序:

static void Main(string[] args)
        {
            try
            {
                Console.WriteLine("----------------------外層try------------------------------");
                errorMethod();               
            }
            catch (Exception ex)
            {
                Console.WriteLine("----------------------外層catch" + ex.Message + "------------------------------");
            }
            finally {
                Console.WriteLine("----------------------外層finally------------------------------");
            }

            Console.ReadKey();


        }

        private static void errorMethod()
        {           
            try
            {
                Console.WriteLine("----------------------內層try------------------------------");
                int i = 0;
                int a = 100/i;
            }
            catch (Exception ex)
            {
                Console.WriteLine("----------------------內層catch" + ex.Message + "------------------------------");
            }
            finally {
                Console.WriteLine("----------------------內層finally------------------------------");
            }
        }

輸出結果:

內層catch處理了異常,所以沒有執行外層catch,把內層的catch注釋掉,再試下:

static void Main(string[] args)
        {
            try
            {
                Console.WriteLine("----------------------外層try------------------------------");
                errorMethod();               
            }
            catch (Exception ex)
            {
                Console.WriteLine("----------------------外層catch" + ex.Message + "------------------------------");
            }
            finally {
                Console.WriteLine("----------------------外層finally------------------------------");
            }

            Console.ReadKey();


        }

        private static void errorMethod()
        {           
            try
            {
                Console.WriteLine("----------------------內層try------------------------------");
                int i = 0;
                int a = 100/i;
            }
            //catch (Exception ex)
            //{
            //    Console.WriteLine("----------------------內層catch" + ex.Message + "------------------------------");
            //}
            finally {
                Console.WriteLine("----------------------內層finally------------------------------");
            }
        }

輸出結果:

總結:try catch嵌套,內層不能捕獲時,會考慮外層內否捕獲,內層能捕獲,則外層catch不執行。


免責聲明!

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



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