重複の可能性:
複数の catch ブロックの実行
1 つの try ステートメントに対して複数の catch ブロックを実行できますか?catch ブロックをどのように処理できますか?catch ブロックなしで try を作成できますか?
重複の可能性:
複数の catch ブロックの実行
1 つの try ステートメントに対して複数の catch ブロックを実行できますか?catch ブロックをどのように処理できますか?catch ブロックなしで try を作成できますか?
複数の catch ブロックが存在する可能性があります (他の回答で既に述べたように) が、最初に例外タイプに一致するブロックのみが実行されます。つまり、catch ブロックを適切に並べ替える必要があります。例えば:
try
{
}
catch (Exception exp1)
{
// Block 1
}
catch (IOException exp2)
{
// Block 2
}
ブロック 1 はすべての例外をキャッチするため、ブロック 2 は実行されません (すべての例外クラスは から派生しますException
)。
try
{
}
catch (IOException exp1)
{
// Block 1
}
catch (Exception exp2)
{
// Block 2
}
この例では、ブロック 2 は、例外がIOException
または から派生したものでない場合にのみ実行されIOException
ます。がスローされた場合、IOException
ブロック 1 のみが実行され、ブロック 2 は実行されません。
技術的には、1 つのキャッチしかヒットできませんが、次のように言います。
1 つの try ステートメントに対して複数の catch ブロックを実行できますか
実行中のキーワード。だから、あなたは試すことができます:
catch (Exception ex)
{
if (ex is MyException1||
ex is MyException2)
{
//do stuff
}
else
{
throw;
}
}
はい、try ステートメントで複数の catch ブロックを使用できます。特定の例外をキャッチすることから始めて、最後のブロックで base をキャッチすることがありますException
。catch ブロックの 1 つだけが例外を処理します。
catch ブロックなしで try ブロックを使用できます。試して/最終的に行います。
try
{
Console.Write("test");
}
catch (IOException ex)
{
}
catch (ArithmeticException ex)
{
}
catch (Exception ex)
{
}
ひっかからずに試す
try
{
}
finally
{
}
1 はいit's possible to have multiple catch
、1 つの特定の例外に対して 1 つのキャッチ
サンプル
try
{
...
}
catch (FormatException)
{
....
}
catch (OverflowException)
{
...
}
2try
なくても指導を受けることができますcatch
try
{
...
}
Finally
{
.....
}
catch
1 つの try..catch ステートメントに対して任意の数のブロックを使用できます。
しかし、一つだけ覚えておいてください。
catch (Exception ex)
{
...
}
すべての例外はクラス Exception を継承するため、最後の catch ブロックにする必要があります。
質問の2番目の部分については、次のいずれかを行うことができます
try
{
stuff...
}
catch(Exception ex){}
また
try
{
stuff...
}
finally{}
、しかし、それ自体で試すことはできません。
1 つのcatch
ブロックのみが実行され、スローされたcatch
のタイプとほぼ一致するが実行されます。Exception
あなたはtry
それ自身を持つことはできません。try catch (one or more catch block)
または またはtry finally
が必要ですtry catch finally