如果您使用try catch块。
try {
//Do my work!
}
catch
{
//Handle my exception
}
有没有办法在catch块中引用异常对象?
即:
try {
//Do my work!
}
catch
{
//Handle my exception
MyUndefinedExceptionObject.Message ????
}
编辑:我认为我不清楚 足够。我知道会怎么样 通常使用try来捕获异常 抓住了。我在想的是 鉴于你有能力不 为您的例外指定一种类型 声明块还有一些 检索异常对象的方法 在这种情况下?从你的答案判断 但我认为没有?
答案 0 :(得分:6)
您需要捕获您关心的异常类型。执行此操作后,您将可以访问该例外的所有属性。
try
{
//Do my work!
}
catch (MyExceptionType e)
{
string s = e.Message;
}
这是一个reference in MSDN,以加快速度。
关于编辑:除非在catch语句中明确指定了异常,否则无法访问抛出的异常。
答案 1 :(得分:2)
是的,就像这样:
try
{
//Do my work!
}
catch (mySpecificException myEx)
{
//Handle my exception
}
catch (Exception ex)
{
//Handle my exception
}
(最具体到最不具体)
答案 2 :(得分:2)
没有
使用裸catch
表示您不关心实际的异常,否则为什么不使用
catch (System.Exception ex)
捕获任何异常?当然,你应该只捕捉你将要处理的异常。
答案 3 :(得分:1)
您需要指出要捕获的特定异常类型,并将其分配给变量。
请改用此语法:
try
{
// Do work
}
catch (MyUndefinedExceptionObject ex)
{
Debug.WriteLine(ex.Message);
}
您还可以包含多个 catch块,并相应地更改异常类型。但是,请记住,您应始终从派生到至少派生的大多数订购它们,以所有例外的基类System.Exception
结束。
您通常也应该避免捕获System.Exception
,而只是偏好 来捕获您可以在catch
块中处理的派生异常,并且不会损坏您的程序的状态。捕获System.Exception
类是一个坏主意,因为您还将捕获无法处理的异常,例如OutOfMemoryException
或StackOverflowException
。
Microsoft在此处提供了有关最佳做法的有用文章:Best Practices for Handling Exceptions