|
1
|
| Rory · 技术社区 · 4 年前 |
|
1
12
这两个类不同,但它们确实继承自同一基类, DbException 。不过,这是所有数据库异常的公共类,不会具有两个派生类中的所有属性 您应该检查您使用的库/NuGet包,并确保使用支持新Microsoft的版本。数据SqlClient库。混淆数据提供者并不有趣,应该尽可能避免。大多数流行的NuGet软件包都使用Microsoft。数据SqlClient已经存在。 如果不能做到这一点,则选项取决于实际处理数据库异常的方式。是否检查SQL Server特定的属性? 另一种选择是推迟升级,直到所有NuGet软件包也升级。这两个库都包含在部署过程中需要包含的本机DLL。如果混合库,则必须包含所有本机DLL。 这可能很痛苦。 处理异常 如果两个库都需要使用,则需要分别处理每个异常类型。模式匹配使此操作更容易:
映射异常
另一种选择是将这两个异常类型映射到一个新的自定义类型,该类型包含感兴趣的属性。你必须绘制两个
这将允许将异常映射到公共
|
|
2
4
扩展Richard的回答,这意味着你的尝试/接球最终看起来像:
如果你想同时处理这两个问题。。 Handler是一些可访问的重载(或父类型参数)方法,用于处理每种类型。。虽然不是最漂亮的,但遗憾的是,一个捕获无法捕获N个不同的类型,除非这些类型都有相同的可用父级,可以被捕获(如果需要,还可以检查异常的类型)。。
编辑完全忘记了
|
|
|
3
1
如果不能确定第三方库是否正在使用
|