我想在下面代码的空catch块中测试一些异常处理逻辑。
try
{
//Do Some stuff that throws a exception
//This is the code i need
}
catch (Exception)
{
//Handle things that inherits from Exception
}
catch
{
//Handle things that dont inherits from Exception
//Want to test this code
}
答案 0 :(得分:13)
从CLR 2.0开始,这不是您需要担心的情况。现在,CLR将自动包装所有不是从System.Exception派生的异常,并使用类型为RuntimeWrappedException
的新异常(Documentation)。
可以通过启用一定程度的应用程序兼容性来禁用此包装,但这肯定不是正常或常见的情况
答案 1 :(得分:5)
您无法编写在C#中抛出非异常的代码。您需要在IL中编写它(并使用ILASM编译)或C ++ / CLI。
但是,说实话,我不担心这种情况。在框架中没有使用抛出非异常的能力,我怀疑它是否在许多第三方代码中使用。我只会解决这个问题,如果您使用的是知道的库,则会抛出非例外情况。