6

重複の可能性:
複数の catch ブロックの実行

1 つの try ステートメントに対して複数の catch ブロックを実行できますか?catch ブロックをどのように処理できますか?catch ブロックなしで try を作成できますか?

4

8 に答える 8

18

複数の 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 は実行されません。

于 2012-09-25T13:46:56.490 に答える
4
  • 複数の catch ブロックを try ブロックに関連付けることができますが、例外を処理できるのは 1 つの catch ブロックのみです。
  • はい、キャッチなしで try ブロックを使用できますが、finally ブロックは必須です
于 2012-09-25T12:59:43.837 に答える
1

技術的には、1 つのキャッチしかヒットできませんが、次のように言います。

1 つの try ステートメントに対して複数の catch ブロックを実行できますか

実行中のキーワード。だから、あなたは試すことができます:

catch (Exception ex)            
{                
    if (ex is MyException1||
        ex is MyException2)
    {
       //do stuff
    }
    else
    {
       throw;
    }
}
于 2012-09-25T13:03:01.440 に答える
0

はい、try ステートメントで複数の catch ブロックを使用できます。特定の例外をキャッチすることから始めて、最後のブロックで base をキャッチすることがありますException。catch ブロックの 1 つだけが例外を処理します。

catch ブロックなしで try ブロックを使用できます。試して/最終的に行います。

        try
        {
            Console.Write("test");
        }
        catch (IOException ex)
        {
        }
        catch (ArithmeticException ex)
        {
        }
        catch (Exception ex)
        {
        }

ひっかからずに試す

        try
        {
        }
        finally
        {
        }
于 2012-09-25T13:00:33.037 に答える
0

1 はいit's possible to have multiple catch、1 つの特定の例外に対して 1 つのキャッチ

サンプル

try
{
    ...
}
catch (FormatException)
{
    ....
}
catch (OverflowException)
{
    ...
}

2tryなくても指導を受けることができますcatch

try
{
 ...
}
Finally
{
  .....
}
于 2012-09-25T13:00:36.760 に答える
0

catch1 つの try..catch ステートメントに対して任意の数のブロックを使用できます。

しかし、一つだけ覚えておいてください。

catch (Exception ex)
{
    ...
}

すべての例外はクラス Exception を継承するため、最後の catch ブロックにする必要があります。

于 2012-09-25T13:10:57.400 に答える
0

質問の2番目の部分については、次のいずれかを行うことができます

try
{
    stuff...
}
catch(Exception ex){}

また

try
{
    stuff...
}
finally{}

、しかし、それ自体で試すことはできません。

于 2012-09-25T13:01:17.003 に答える
0

1 つのcatchブロックのみが実行され、スローされたcatchのタイプとほぼ一致するが実行されます。Exceptionあなたはtryそれ自身を持つことはできません。try catch (one or more catch block)または またはtry finallyが必要ですtry catch finally

于 2012-09-25T13:01:38.550 に答える