下面的代码无法捕获异常。
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.");
}
}
答案 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
,那么看起来您的异常将不会被抛出