Answers:
不能将其键入Exception,因为有可能在.Net中抛出不是从System.Exception派生的对象。这在C#或VB.Net中是不可能的,但是在其他基于CLR的语言中是可能的。因此,API必须支持这种可能性并使用类型对象。
因此,尽管它永远不应该为null,但实际上可能不是System.Exception。
有关更多详细信息,请参见CLI规范第10.5节(特别是CLS规则40)
System.Exception
。异常可能是由于不符合CLI的语言决定抛出System.Int32
。System.Exception
无论如何,较新版本的CLR都会自动换行,但这是可以禁用的设置
try-catch
block不允许捕获非Exception对象?
除了Jared已经提到的内容之外,Exception
如果RuntimeCompatibilityAttribute(WrapNonExceptionThrows=true)
已将其应用于程序集(将由C#和VB编译器自动添加),则可以在.NET Framework 2.0及更高版本中安全地进行强制转换。
应用此属性后,将包装非Exception“ exceptions” RuntimeWrappedException
。