簡體   English   中英

C#語法錯誤

[英]C# Syntax error

是語法錯誤還是編譯錯誤?

using System;

namespace AAA
{
    class MyException : Exception{

    }
    class My2Exception : MyException{

    }
    class MainClass
    {
        public static void Main (string[] args)
        {
            try{
                throw new MyException();
            }
            catch(Exception e){  // compiler says that this catch all exception occur          error? Is it syntax error?
            }
            catch(MyException m){  // Syntax error
            }
        }
    }
}

這是語法錯誤嗎? 這是錯誤語法錯誤嗎? 謝謝

由於Exception類型的catch塊可能是最不特定的異常處理程序,因此提供一個更特定的catch塊不僅是多余的,而且在C#中是編譯時錯誤 因此,在多捕獲塊中,應始終最后指定最通用的catch塊:

using System;

namespace AAA
{
    class MyException : Exception
    {    

    }

    class MainClass
    {
        public static void Main (string[] args)
        {
            try
            {
                throw new MyException();
            }
            catch (MyException m)
            {  
                //TODO: something
            }
            catch (Exception e)
            {
                //TODO: something
            }
        }
    }
}

Exception是比MyException更通用的類,這就是為什么您應該最后捕獲它。 正如Shaharyar所說,這是“語義錯誤”

try{
   throw new MyException();
}
catch(MyException m){
}
catch(Exception e){  // Syntax error
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM