c# - 如何找到在 C# 中抛出的异常的异常类型?

标签 c# exception

我正在使用一个似乎没有记录异常的库。该库用于与公司生产的产品进行通信。我希望能够区分抛出的异常,但我不知道异常的名称(例如通信超时或欠压情况)。

他们所有的例子都只使用catch(Exception ex)。我怎样才能找到我需要用来捕捉个别错误的东西?当我执行 ex.toString() 时,我得到如下信息:

System.Exception: Timeout
    at CMLCOMLib.EcatObj.Initialize()
    at copley_cmo_test.MainWindow.btnConnect_Click(Object sender, RoutedEventArgs e)
in c:\Users\adam.siembida\Desktop\copley_cmo_test\copley_cmo_test\MainWindow.xaml.cs:line 41

最佳答案

这个:

System.Exception: Timeout

显示他们只是抛出一个裸System.Exception,例如

if (weHaveNoApiDesignSkills)
{
    throw new Exception("Timeout");
}

可能有一些设计得更好的异常,但你展示的那个并不有前途:(

不幸的是,除非您开始使用异常中的消息来区分它们(这几乎总是是个坏主意),否则您会被卡住。可能值得询问库的作者,看看他们是否可以改进 future 版本的问题。

关于c# - 如何找到在 C# 中抛出的异常的异常类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17219794/

相关文章:

c# - 如何允许注册表(写入)访问我的 .NET 应用程序?

android - Gradle 异常 : "There must be one branch ID(.bid) file in the root dir of the project"

c# - Azure 服务总线与 SignalR 集成

c# - 身份服务器 : Add claims to access token in hybrid flow in MVC client

c# - 如何使用 const int 属性的名称

c# - 使用 XPathEvaluate 获取 Linq-to-Xml 查询中的文本节点值

c# - 撤消删除 Entity Framework

c++ - 如果 CFile::Write 抛出异常会发生什么?

java - 如何处理InputMismatchException?

安卓。异常处理