gpt4 book ai didi

c# - 如何将引发的异常从C#类传递到C#表单

转载 作者:行者123 更新时间:2023-12-03 08:15:24 27 4
gpt4 key购买 nike

我在C#中有一个项目,该项目分为UI层和Business层。
基本上,我有一个表格,您可以在其中选择一个帐户并输入一个存款号码。单击确定按钮后,您的DepositTransaction.cs将处理交易。

这是DepositForm的示例代码:

private void buttonOK_Click(object sender, EventArgs e) {
try {
bool inputTest;
decimal amount;
inputTest = decimal.TryParse(textBoxAmount.Text, out amount);
if (inputTest == false) {
throw new InvalidTransactionAmtException();
} else {
BankAccount account = comboBoxAccount.SelectedItem as BankAccount;
deposit = new DepositTransaction(account, amount);
this.DialogResult = DialogResult.OK;
}
} catch (InvalidTransactionAmtException ex) {
errorProviderDeposit.SetError(textBoxAmount, ex.Message);
textBoxAmount.Select();
textBoxAmount.SelectAll();
} catch (InvalidTransactionAmtNegativeException ex) {
errorProviderDeposit.SetError(textBoxAmount, ex.Message);
textBoxAmount.Select();
textBoxAmount.SelectAll();
} catch (AccountInactiveException ex) {
errorProviderDeposit.SetError(textBoxAmount, ex.Message);
textBoxAmount.Select();
textBoxAmount.SelectAll();
}
}

现在是DepositTransaction的示例代码
public override void DoTransaction() {
try {
if (Amount <= 0) { //Amount is the amount passed by the form
throw new InvalidTransactionAmtNegativeException();
}
if (acc.Active == false) { //acc is the account passed by the form
throw new AccountInactiveException();
}
acc.Credit(Amount);
Summary = string.Format("{0} {1}", Date.ToString("yyyy-MM-dd"), this.TransactionType);
this.setStatus(TransactionStatus.Complete);
} catch (InvalidTransactionAmtNegativeException ex) {
throw;
} catch (AccountInactiveException ex) {
throw;
}
}

但是,尝试上述操作,不会将错误传递给表单。它只是使程序崩溃,说没有处理异常。

我在stackoverflow上看到了另一个问题,该问题提到传递错误的方法只是使用 throw:,该错误将传递给调用此类的类(在我的情况下为表单),并将以表单处理。

我究竟做错了什么?
谢谢

最佳答案

这仅表示抛出了既不是 InvalidTransactionAmtNegativeException类型也不是 AccountInactiveException 类型的异常。添加新的捕获块

catch (Exception ex) {
throw;
}

编辑:你应该把它排在最后。它会捕获您的DoTransaction方法中可能引发的任何其他异常

关于c# - 如何将引发的异常从C#类传递到C#表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11150105/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com