2011-01-11 67 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

實際上會重現問題的郵政編碼。 – 2011-01-11 21:35:22

回答

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++遷移..所以idrk我在談論什麼。 嘗試修復語法並使用您的「原因」