代码之家  ›  专栏  ›  技术社区  ›  mal

在try-catch块中,异常块中的“finally”重写“return”吗?[副本]

  •  0
  • mal  · 技术社区  · 6 年前

    看起来像 return 被覆盖 finally 在接球区。对吗?
    例如:

    public String myMethod() {
    
        try {
            // Do stuff
    
        } catch(Exception e) {
            // Handle exception
         return failed;
    
        } finally {
            // Close sockets
        }
    
        return success;    
    }
    

    如果我在上面的代码中得到一个异常,这个方法仍然会返回success。

    1 回复  |  直到 6 年前
        1
  •  -1
  •   Flo    6 年前

    这个 finally 确保写入的任何类型的代码都将被执行,即使发生异常。 如果要返回,说明方法不成功,则可能需要执行以下操作:

    public String myMethod(){
    boolean success = true;
    try{
      // Do stuff
    
    }catch(Exception e){
     // handle exception
     success = false;
    
    }finally{
      //close sockets
    }
    return success;
    
    }