1 つだけ違いがあります:catch(Exception ex)
例外クラス(エラー原因) インスタンスへのアクセスがあります。通常、元のメッセージを出力するには、例外クラスのインスタンスが必要です。catch(Exception)
catch(Exception ex)
try {
...
}
catch (AppServerException e) {
Console.WriteLine("Application server failed to get data with the message:");
Console.WriteLine(e.Message); // <- What's actually got wrong with it
}
例外クラスのインスタンスが必要ない場合、たとえば、例外を消費するだけの場合は、catch(Exception ex) 構文が過剰であり、catch(Exception) が優先されます。
try {
c = a / b;
}
catch (DivideByZeroException) {
c = Int.MaxValue; // <- in case b = 0, let c be the maximum possible int
}
ついに。再スルーせずに一般的な例外クラスをキャッチしないでください:
try {
int c = a / b;
}
catch (Exception) { // <- Never ever do this!
Console.WriteLine("Oh NO!!");
}
「エラー (CPU からの緑色の煙を含む) が発生した場合は、単に "Oh No" を出力して続行する」をコーディングしますか? Exception クラスのパターンは次のようなものです。
tran.Start();
try {
...
tran.Commit();
}
catch (Exception) {
// Whatever had happened, let's first rollback the database transaction
tran.Rollback();
Console.WriteLine("Oh NO!");
throw; // <- re-throw the exception
}