我有一个非常基本的函数,它搜索CustomerAccount
的ArrayList,并返回与regNum
参数匹配的帐户传递给它。但是,只要抛出CustomerAccountNotFoundException,我的for循环就会中断。
public CustomerAccount findCustomer(String regNum) throws CustomerNotFoundException
{
CustomerAccount customer = null;
for (int i=0; i < accounts.size(); i++)
{
if(regNum.equals(accounts.get(i).getCustomerVehicle().getRegistration()))
{
customer = accounts.get(i);
}
else
{
throw new CustomerNotFoundException();
}
}
return customer;
}
我通过在异常后打印i
的值进行了测试,并将其重置为0.如何在抛出异常后继续循环?我希望每次帐户不匹配时抛出它,并在帐户返回时返回帐户。我也尝试了continue;
这不起作用。
答案 0 :(得分:4)
根据您描述的逻辑,您应该只在循环完成后抛出异常(如果未找到匹配项):
<form name="$ctrl.bankInfoForm" novalidate ng-submit="$ctrl.saveInfo($event)">
<input type="text" ng-model="$ctrl.bankTransferNumber" ng-disabled="$ctrl.disableTextEdit" name="bankTransferNumber" required ng-change ="$ctrl.changeTransferNumber()"/>
<div ng-messages="$ctrl.bankInfoForm.bankTransferNumber.$error" ng-show="$ctrl.bankInfoForm.bankTransferNumber.$dirty">
<div ng-message = "validateTransferNumber" >The transfer number is not correct</div>
</div>
</form>
答案 1 :(得分:1)
在调用一次方法后,不能从方法中抛出多个异常。
一旦抛出异常,你就退出范围,因此不能抛出另一个异常。
如果客户在循环结束时为空,则在特定情况下可以执行的操作是抛出异常。
答案 2 :(得分:0)
从throws类中删除CustomerNotFoundException。仅在else块中捕获异常,因为它似乎没用,并在异常捕获后继续。 不清楚使用抛出异常,因为你仍然希望继续循环。 在代码中抛出异常将返回父方法。