質問

「具体的な」例外(formatexception^またはoverflowexception^)をキャッチし、再スローして「一般」の例外(例外^)キャッチブロックでキャッチしようとしています。

実行すると、入力を介してフォーマットの例外を与えます。次に、このエラーをダイアログボックスで取得します:「futurevalue.exe追加情報:入力文字列は正しい形式ではありませんでした。 「break」をクリックすると、行#232に連れて行かれます。

これが部分的なコードです:

try
{
...
}
catch(FormatException^ ex)
{
      MessageBox::Show("FormatException Occured.  Message: " + ex->Message);
      throw;
}
***line# 232*** catch(OverflowException^ ex)
{
      MessageBox::Show("Overflow Occured. Message: " + ex->Message);
      throw;
}
catch(Exception^ ex)
{
      MessageBox::Show("TESTING");
}
役に立ちましたか?

解決

rethrow式(assignment_expressionなしでスロー)により、元々投げられたオブジェクトが弾力性を発揮します。例外はすでにrethrow式が発生する範囲でキャッチされているため、次の動的に囲まれたトライブロックに復帰します。したがって、Rethrow式が発生したスコープでCatchブロックによって処理することはできません。

上記で考慮に入れて、次のようにコードを書きたいと思うかもしれません。

try
{
    try
    {
       //...
    }
    catch(FormatException^ ex)
    {
          MessageBox::Show("FormatException Occured.  Message: " + ex >Message);
          throw;
    }
    catch(OverflowException^ ex)
    {
          MessageBox::Show("Overflow Occured. Message: " + ex->Message);
          throw;
    }
}
catch(Exception^ ex)
{
      MessageBox::Show("TESTING");
}

他のヒント

これより上にトライキャッチブロックはありますか?

スローステートメントで例外を投げただけで、誰もそれをキャッチしていません。デバッガーはあなたを例外がスローされた場所に連れて行きました

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top