抱歉缺乏信息..。
有没有办法找出导致调用抛出异常的具体异常是什么?
目前,我正在通过执行catch(异常e)来捕获所有异常,但我知道这根本不是很好的实践。
有没有办法从异常中知道是什么原因导致了这个问题,这样我就可以更细一点了吗?
发布于 2017-06-08 19:35:21
您可以使用不同的方法获取有关特定异常的更多信息。这里,我使用System.Diagnostics.Debug类在Visual的输出控制台中打印。在您的catch块:
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
}发布于 2017-06-08 19:29:49
备选案文1-文件
阅读您正在调用的方法的文档,如果它是Framework类型(与SqlConnection.Open一样,抛出的异常有很好的文档记录。
选项2-在运行时发现它们
如果第三方库和文档是有限的,那么在运行时使用exception.GetType()检查exception.GetType(),然后添加您想要作为catch块处理的已知异常。
就我个人而言,我更喜欢在不确定是否会出现异常的情况下,根本不添加catch块。如果/当它完成时,调试器将中断(如果它被设置为坏的话),或者您有一个全局捕获日志和重新抛出的所有内容。然后得到类型并相应地更新代码。添加这样一个全局异常记录器的位置取决于您正在开发的应用程序的类型。如果您使用全局记录器的路径,一定要注意重新抛出异常,以便应用程序在运行时中断,而不是吞下它;2)使用throw;语法(而不是throw ex;)重新抛出。
发布于 2017-06-08 19:23:14
您可以捕获不同类型的异常。有了这个解决方案,您就可以轻松地处理不同的类型。
try
{
//Try something
}
catch (StackOverflowException soe)
{
//Handle StackOverFlowException
}
catch (FormatException fe)
{
//Handle FormatException
}
//... Other exceptionshttps://stackoverflow.com/questions/44443837
复制相似问题