【发布时间】:2015-07-13 15:36:42
【问题描述】:
我已经构建了一个简单的银行应用程序,它能够执行通常的操作;充值、提现等
我的控制器方法执行这些操作并挽救帐户或其他实体引发的异常。
以下是控制器代码中使用的其中一些方法:
def open(type, with:)
account = create type, (holders.find with)
add account
init_yearly_interest_for account
boundary.render AccountSuccessMessage.new(account)
rescue ItemExistError => message
boundary.render message
end
def deposit(amount, into:)
account = find into
account.deposit amount
boundary.render DepositSuccessMessage.new(amount)
rescue ItemExistError => message
boundary.render message
end
def withdraw(amount, from:)
account = find from
init_limit_reset_for account unless account.breached?
account.withdraw amount
boundary.render WithdrawSuccessMessage.new(amount)
rescue ItemExistError, OverLimit, InsufficientFunds => message
boundary.render message
end
def get_balance_of(id)
account = find id
boundary.render BalanceMessage.new(account)
rescue ItemExistError => message
boundary.render message
end
def transfer(amount, from:, to:)
donar = find from
recipitent = find to
init_limit_reset_for donar unless donar.breached?
donar.withdraw amount
recipitent.deposit amount
boundary.render TransferSuccessMessage.new(amount)
rescue ItemExistError, OverLimit, InsufficientFunds => message
boundary.render message
end
def add_holder(id, to:)
holder = holders.find id
account = find to
account.add_holder holder
boundary.render AddHolderSuccessMessage.new(holder, account)
rescue ItemExistError, HolderOnAccount => message
boundary.render message
end
def get_transactions_of(id)
transactions = (find id).transactions
boundary.render TransactionsMessage.new(transactions)
rescue ItemExistError => message
boundary.render message
end
def get_accounts_of(id)
holder = holders.find id
accounts = store.select { |_, a| a.holder? holder }.values
boundary.render DisplayAccountsMessage.new(accounts)
rescue ItemExistError => message
boundary.render message
end
如您所见,我在多个方法中拯救了多个错误,通常会处理相同的错误。
虽然这可行,但我想知道是否可以在调用控制器中的任何方法时重构和处理这些异常。
例如:
during:
open, deposit, withdraw
rescue ItemExistError => message
boundary.render message
任何帮助将不胜感激。
【问题讨论】: