我有 2 个功能:
public void WithdrawMoney()
{
//Take money from bank account
//Exceptions abort the operation and are printed
//Rethrow exception if called by TransferMoney()
}
public void TransferMoney()
{
//Take money from one account and only deposit on another account if no exceptions were caught in WithdrawMoney()
WithdrawMoney();
DepositMoney();
}
我想要的是能够重新抛出发生在WithdrawMoney()中的异常,只有当它被TransferMoney()调用时。如果我只是想从账户中取款,必须处理异常,但不必重新抛出,因为它不是由其他方法调用的。
除了使用布尔值之外,我想到了另一种解决方案。我可以查看堆栈跟踪,看看TransferMoney()是否调用了WithdrawMoney(),如果确实如此,则只重新抛出异常。或者有没有办法查看方法中是否发生异常?
我只是想知道您是否可以在抛出异常之前检查是否可以在 catch 块中抛出异常。如果我总是抛出它,当我直接调用WithdrawMoney()时,异常将不会被处理。