C# 语法错误
本文关键字:错误 语法 | 更新日期: 2023-09-27 18:31:31
是语法错误还是编译错误?
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
}