2011-01-11 24 views
0

次のようにsystem.exceptionの派生例外を使用しています。SomeFunctionでスローされた例外がSomeOtherFunctionのcatchブロックで捕捉されると予想しますが、コードが例外をスローしようとしたときに例外エラーが発生すると、どんな洞察も得られるはずです。例外がスローされましたが、キャッチされなかったsystem.exceptionから派生しました

void SomeFunction() 
{ 
    if (someValue == false) 
    { 
     throw(new MyException("some error, falseValue,null); 
    } 
} 

void SomeOtherFunction() 
{ 
    try 
    { 
     SomeFunction(); 
    } 
    catch(MyException ex) 
    { 
    } 
} 

public class MyException : Exception 
{ 
    public MyException (string message, Reason reason, Exception innerException) 
     : base(message, innerException) 
    { 
     Reason = reason; 
    } 

    public Reason Reason { get; private set; } 
} 
+0

実際に問題を再現する郵便番号です。 –

答えて

2

この問題に貢献している他のコードが存在しなければならない - ここで働く完全な例です:

using System; 

class Example 
{ 
    static void Main() 
    { 
     SomeOtherFunction(); 
    } 

    static void SomeFunction() 
    { 
     throw new MyException("some error"); 

    } 

    static void SomeOtherFunction() 
    { 
     try 
     { 
      SomeFunction(); 
     } 
     catch (MyException) 
     { 
      Console.WriteLine("caught the exception"); 
     } 
    } 
} 

class MyException : Exception 
{ 
    public MyException(string message) 
     : base(message) { } 
} 

おそらく、あなたは、この例を使用することができますし、欠けているものがあるかどうかを確認するために逆方向に働きますあなたの本当のコードから?あなたの例とのコンパイルの問題があったので、私はあなたがいくつかの生産コードを消毒したと仮定しています。

0

マイナーな構文エラーがあります。しかし、あなたの未処理の例外エラーは、MyExceptionのコンストラクタや、コンストラクタ/ get、setメソッドでReasonを処理する方法から来ている可能性があります。あなたがクラスに値を設定しようとしているようですが、私はまだC++から移行しようとしています。 構文を修正して、「理由」で作業してください

関連する問題