在C#try -catch中,无法捕获异常

时间:2010-05-21 12:07:04

标签: c# try-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.");
  }
}

4 个答案:

答案 0 :(得分:5)

是的,它会捕获异常,即使知道它是从你正在调用的另一个函数中引发的。

没有抛出异常,或者您没有正确检测到异常被捕获,可能在两个地方都设置了断点。

答案 1 :(得分:2)

如果ExistFreeSubscription函数导致堆栈溢出,则不会捕获它。

此外,该函数可能会抛出一个不从System.Exception继承的异常对象(这在其他语言中是可能的,它不符合CLS)。 catch (Exception ex)不会捕获此类异常(catch { }块可以捕获异常对象,即使它们不是从System.Exception继承的。)

答案 2 :(得分:0)

这应该有用,我会仔细查看你的.ExistFreeSubscription()方法,看看为什么它没有返回true。

答案 3 :(得分:0)

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

如果bizNTx.ExistFreeSubscription返回false,那么看起来您的异常将不会被抛出