我正在编写一个程序,它从工业设备中检索数据并将其导出到MySQL数据库。为了与设备交互,我使用的是制造商提供的DLL驱动程序。在此DLL中,当与设备通信时出现通信错误或任何其他类型的异常情况时,会抛出一个自定义异常。
问题是存在单个类异常。因此,当我捕获该类型的异常时,我无法确定发生了哪个特定问题,因为存在多个问题(连接超时,尝试访问无效的内存地址等)。
所以我现在正在做的是使用Exception.Message
属性。因此,例如,如果异常消息包含“无效地址”,那么我知道该错误是由于尝试访问设备中的非法地址,类似地,如果异常消息包含“连接超时“我知道有一个例外超时。但是这种方法看起来非常危险,因为在将来的DLL版本中消息可能会发生变化。
如何更好地解决这个问题呢?
答案 0 :(得分:1)
如果你很幸运,“泛型”异常有一个带有真实异常类型的InnerException。
如果所有异常都具有相同的类型且唯一的区别是消息,那么您的解决方案是最好的。希望制造商不要改变任何东西,并确保测试每个新版本......