2017-02-19 1 views
1
static void Main(string[] args) 
     { 
      try 
      { 
       var intValue = "test"; 
       var test = Convert.ToInt32(intValue); 
      } 
      catch (FormatException) 
      { 
       Console.WriteLine("format exception"); 
       throw; 
      } 
      catch (Exception) 
      { 

      } 
      finally 
      { 
       Console.WriteLine("finally"); 
      } 
     } 

私によれば、文字列からintへの変換中にFormatExceptionがスローされます。今catchブロックの中で、元の例外を投げています。これは一般的な例外キャッチブロックにキャッチされないのはなぜですか?私が試合を投げた場合、アプリケーションはクラッシュしません。このC#コードがプロセスをクラッシュさせるのはなぜですか?

答えて

5

これは一般的な例外キャッチブロックにキャッチされないのはなぜですか?

汎用的な例外ブロックのみtryブロック内でスローされるとcatchブロックからスローされた例外をキャッチしない例外をキャッチしているため。

catchブロックから例外をスローし、それを処理したい場合は、もう1つのtry/catchに呼び出しコードをラップする必要があります。

関連する問題