Try-Catch以及如何在catch块中抛出工作

时间:2009-10-19 19:39:20

标签: try-catch

我对投掷有疑问。如何在以下代码中使用throw? catch块是否返回false?

try
{
    //code
}
catch(Exception ex)
{
    throw;
    return false;
}

3 个答案:

答案 0 :(得分:12)

不,它重新抛出。调用堆栈需要捕获它。

永远不会达到return false

答案 1 :(得分:3)

投掷和返回虚假没有意义。异常用于指示何时发生错误,因此没有理由同时具有指示这样的布尔标志。假设您的try / catch在BankAccount类中。如果您的客户端代码如下所示:

boolean success = bankAccount.withdraw(20.00);
if(success == false) System.out.println("An error! Hmmm... Perhaps there were insufficient funds?");
else placeInWallet(20.00);

你可能会这样做:

try {
   bankAccount.withdraw(20.00);
   placeInWallet(20.00);
}
catch(InsufficientFunds e) {
   System.out.println("An error! There were insufficient funds!");
}

哪个更干净,因为正常逻辑与错误处理逻辑明显分开。

答案 2 :(得分:2)

没有返回值。 throw停止执行该方法,并且调用块将收到重新抛出的异常。