[英]Reading exception from try catch when exception type not specified
在您使用try catch块的情况下。
try {
//Do my work!
}
catch
{
//Handle my exception
}
有没有办法在catch块中引用异常对象?
即:
try {
//Do my work!
}
catch
{
//Handle my exception
MyUndefinedExceptionObject.Message ????
}
编辑:我认为我不够清楚。 我知道如何使用try catch块捕获异常。 我想知道的是,你有能力不为你的异常指定一个类型但是声明块在这种情况下仍然有一些方法来检索异常对象吗? 从你的答案判断,但我认为没有?
是的,像这样:
try
{
//Do my work!
}
catch (mySpecificException myEx)
{
//Handle my exception
}
catch (Exception ex)
{
//Handle my exception
}
(最具体到最不具体)
没有。
使用裸catch
表示您不关心实际异常,否则,为什么不使用
catch (System.Exception ex)
抓住任何例外? 当然,您应该只捕获您将处理的异常。
您需要指出要捕获的特定异常类型,并将其分配给变量。
改为使用此语法:
try
{
// Do work
}
catch (MyUndefinedExceptionObject ex)
{
Debug.WriteLine(ex.Message);
}
您还可以包含多个 catch块,并相应地更改异常类型。 但是,请记住,您应始终从大多数派生到最少派生的顺序排序,以所有异常的基类结束, System.Exception
。
您通常也应该避免捕获System.Exception
,而只是优先捕获可以在catch
块中处理的派生异常,并且不会破坏程序的状态。 捕获System.Exception
类是一个坏主意,因为您还将捕获无法处理的异常,例如OutOfMemoryException
或StackOverflowException
。
Microsoft在此处提供了有关最佳实践的有用文章: 处理异常的最佳实践
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.