【发布时间】:2011-10-06 05:25:12
【问题描述】:
我是 C# 新手,想更好地了解异常捕获。这些问题可能是愚蠢的菜鸟问题。它们对我很重要,我提前道歉。
例如,在 System.IO Path 类 GetFullPath 中,可以抛出五个异常:ArgumentException、SecurityException、ArgumentNullException、NotSupportedException 和 PathTooLongException。我知道必须组织 catch 块,以便首先捕获最具体的异常,最后捕获最一般的异常。
问题 1: 当 MSDN 提供有关类可能引发的异常的信息时,我如何知道哪个异常是最具体的,哪个是最不具体的?换句话说,我如何从 MSDN 给我的内容中确定从最具体到最不具体的异常顺序?
问题 2: 我是否需要明确地明确捕获所有异常,还是只使用最一般的异常来捕获所有其他异常?比如还是用Path类,是不是需要做...
try { ... }
catch(System.ArgumentNullException ane) { ... }
catch(System.NotSupportedException nse) { ... }
catch(System.IO.PathTooLongException ple) { ... }
catch(System.IO.SecurityException se) { ... }
catch(System.ArgumentException ae) { ... }
或者将是一个简单的...
catch(System.ArgumentException ae) { ... }
捕获所有异常?
问题 3: 在 bool 方法中执行以下操作是否正确的语法结构...
try
{
... ;
return true;
}
catch(System.ArgumentException ae)
{
... ;
return false;
}
【问题讨论】:
-
答案是:除非您知道自己能处理好(也就是说,除非您能真正修复问题),否则不要抓住它们。这个问题是重复的,我会尝试找到它重复的问题。
-
谢谢。我只需要为了从 bool 方法返回 false 来捕获它们。谢谢你的链接。我会看看他们。
-
如果你只想捕获所有并返回
false只捕获System.Exception基类,甚至只使用catch { return false; }
标签: c# exception-handling try-catch block