2010-05-21 3 views
0

아래의 코드는 예외를 catch 할 수 없습니다.C# try -catch에서 예외를 catch 할 수 없습니다.

않습니다 catch 함수에서 발생한 예외를 catch 할 수 있습니까?

try 
{ 
    Arche.Members.Feedback.FeedbackBiz_Tx a = 
    new Arche.Members.Feedback.FeedbackBiz_Tx(); 

    a.AddFreeSubscriptionMember(
    itemNo, buyerID, itemName, 
    DateTime.Today,DateTime.Today); 
} 
catch(Exception ex) 
{ 
    RegisterAlertScript(ex.Message); 
} 

...

public void AddFreeSubscriptionMember(
    string itemNo, string buyerID, string itemName, 
    DateTime fsStartDate, DateTime fsEndDate) 
{ 
    FeedbackBiz_NTx bizNTx = new FeedbackBiz_NTx(); 

    if (bizNTx.ExistFreeSubscription(buyerID, itemNo)) 
    { 
    throw new Exception("Exception."); 
    } 
} 
+3

은 아마도 예외에가 발생 가까이 가도를가 발생되지 않습니다 보인다? – Jehof

+1

이게 작동해야합니다 ... 아마도 "RegisterAlertScript"가 또 다른 축척을 제기합니까? – Jack

+0

디버거라고하는이 멋진 것이 있습니다 ... – fearofawhackplanet

답변

5

예는 예외를 잡을 것입니다 심지어는 당신이 호출하는 다른 함수 내에서 발생합니다 알고있다.

예외가 발생하지 않거나 예외가 발견되었다는 것을 제대로 감지하지 못하면 두 위치 모두에 중단 점을 넣을 수 있습니다.

2

ExistFreeSubscription 함수가 스택 오버플로를 일으키는 경우 캐치되지 않습니다.

또한이 함수는 System.Exception에서 상속받지 않는 예외 객체를 throw 할 수 있습니다 (다른 언어에서도 가능하며 CLS와 호환되지 않습니다). catch (Exception ex)은 이러한 종류의 예외를 catch하지 않습니다 (catch { } 블록은 System.Exception에서 상속받지 않아도 예외 객체를 catch 할 수 있음).

0

정상적으로 작동해야합니다. 왜 당신이 .ExistFreeSubscription() 메서드를 사용하면 그것이 사실을 반환하지 않는지 알 수 있습니다.

0
if (bizNTx.ExistFreeSubscription(buyerID, itemNo)) 
{ 
    throw new Exception("Exception."); 
} 

bizNTx.ExistFreeSubscription하면 반환 false은, 그것은, 조건이 false로 평가의 원인이 당신의 예외처럼