в C # try -catch, не может поймать исключение - PullRequest
0 голосов
/ 21 мая 2010

код ниже не может поймать исключение.

не может 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 ]

5 голосов
/ 21 мая 2010

Да, оно поймает исключение, даже если оно будет известно из другой вызываемой вами функции.

Либо исключение не выдается, либо вы неправильно определяете, что исключение перехвачено, возможно, установите точку останова в обоих местах.

2 голосов
/ 21 мая 2010

Если функция ExistFreeSubscription вызывает переполнение стека, она не будет перехвачена.

Кроме того, функция может генерировать объект исключения, который не наследуется от System.Exception (это возможно в других языках, не совместимых с CLS). catch (Exception ex) не будет перехватывать исключения такого рода (блок catch { } может перехватывать объекты исключений, даже если они не наследуются от System.Exception).

0 голосов
/ 21 мая 2010
if (bizNTx.ExistFreeSubscription(buyerID, itemNo))
{
    throw new Exception("Exception.");
}

Если bizNTx.ExistFreeSubscription возвращает false, то похоже, что ваше исключение не будет выдано

0 голосов
/ 21 мая 2010

Это должно сработать, я бы посмотрел поближе на ваш метод .ExistFreeSubscription (), чтобы понять, почему он не возвращает true.

...