首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找出具体的异常

找出具体的异常
EN

Stack Overflow用户
提问于 2017-06-08 19:13:13
回答 4查看 569关注 0票数 1

抱歉缺乏信息..。

有没有办法找出导致调用抛出异常的具体异常是什么?

目前,我正在通过执行catch(异常e)来捕获所有异常,但我知道这根本不是很好的实践。

有没有办法从异常中知道是什么原因导致了这个问题,这样我就可以更细一点了吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-06-08 19:35:21

您可以使用不同的方法获取有关特定异常的更多信息。这里,我使用System.Diagnostics.Debug类在Visual的输出控制台中打印。在您的catch块:

代码语言:javascript
复制
using System.Diagnostics;

try  
{
    // do stuff
}
catch (Exception e)
{
    Debug.WriteLine(e.GetType());  // Displays the type of exception
    Debug.WriteLine(e.Message());  // Displays the exception message
}

您可以在这里看到更多信息:异常方法 & 异常属性

票数 3
EN

Stack Overflow用户

发布于 2017-06-08 19:29:49

备选案文1-文件

阅读您正在调用的方法的文档,如果它是Framework类型(与SqlConnection.Open一样,抛出的异常有很好的文档记录。

选项2-在运行时发现它们

如果第三方库和文档是有限的,那么在运行时使用exception.GetType()检查exception.GetType(),然后添加您想要作为catch块处理的已知异常。

就我个人而言,我更喜欢在不确定是否会出现异常的情况下,根本不添加catch块。如果/当它完成时,调试器将中断(如果它被设置为坏的话),或者您有一个全局捕获日志和重新抛出的所有内容。然后得到类型并相应地更新代码。添加这样一个全局异常记录器的位置取决于您正在开发的应用程序的类型。如果您使用全局记录器的路径,一定要注意重新抛出异常,以便应用程序在运行时中断,而不是吞下它;2)使用throw;语法(而不是throw ex;)重新抛出。

票数 2
EN

Stack Overflow用户

发布于 2017-06-08 19:23:14

您可以捕获不同类型的异常。有了这个解决方案,您就可以轻松地处理不同的类型。

代码语言:javascript
复制
try
{
    //Try something
}
catch (StackOverflowException soe)
{
    //Handle StackOverFlowException
}
catch (FormatException fe)
{
    //Handle FormatException
}
//... Other exceptions
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44443837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档