在框架中捕获 .Net 标准异常



我有一个.net标准库,它抛出了一个在netstandard2.0(System.Configuration.ConfigurationErrorsException(中定义的异常。我有一个针对 4.7.2 框架编译的测试程序集,该框架调用标准库,并希望捕获异常。一切都编译得很好。在运行时,捕获不会触发,因为它链接到的 ConfigurationErrorsException 来自 4.7.2 而不是标准。请注意我从单元测试中得到的错误。

如何告诉我的框架代码捕获标准异常?注意我也不想/不能将测试程序集变成网络标准。

消息:测试方法必需字段未设置引发异常 System.Configuration.ConfigurationErrorsException,但异常 System.Configuration.ConfigurationErrorsException 是预期的。异常消息:系统配置配置错误异常:参数"AnInt"是必需的,但未设置!

try
{
SampleSettingsClass target = new SampleSettingsClass(settingsProvider);
}
catch (System.Configuration.ConfigurationErrorsException)
{
failed = true;
}

如果我改用 catch(异常(,则会捕获异常。预期框架异常和引发的网络标准异常的完全限定类型是不同的。

//framework 
typeof(System.Configuration.ConfigurationErrorsException).AssemblyQualifiedName
"System.Configuration.ConfigurationErrorsException, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
//net standard 
e.GetType().AssemblyQualifiedName
"System.Configuration.ConfigurationErrorsException, System.Configuration.ConfigurationManager, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51"

正如 Hans 在评论中所说,如果我的框架应用程序链接到标准的 System.Configuration 程序集而不是框架版本,那么我可以捕获此异常。只是我期望的神奇重新输入不适用于第三方库(可悲的是(。

最新更新