Java try with resource 难受

cheneydog:之前把 try 都改成了 java try with resource 形式。现在有新需求,发现无法实现,难道又要改回来?

try( Handler api = getHandler() ) {
    // 做点啥
    api.getState();
    
} catch ( Exception e ){
    log.error("getState {} 时异常 {}", api, e);
    
    // [看这里]  我想要在执行出错的情况下多做一步操作,api 这个对象竟然没法访问到!!!
    api.markDirty();
} 

请教,如果我要在异常的情况下多做一点操作, java try with resource 形式是不是就没法写了???

那也太鸡肋了。。。

ChenFanlin:emmm 第一直觉是在里面再套个 try catch 来执行 Java try with resource 难受

glasslion:api 定义移到外面去不就行了

xiangyuecn:try( Handler api = getHandler() ) {

}

这才是真正的 try with resource,科学点:

using( Handler api = getHandler() ){

}

啥也不是:
try(xxx){}catch(){}

lxk11153:链接: https://juejin.im/post/6844903517086285837
> 在 Java 7 中,try-with-resouces 语法要求为每一个资源声明一个新的变量,而且这些资源由 try-with-resources 语句进行管理。
> 在 Java 9 中:如果一个资源被 final 或者等效于 final 变量引用,则在不需要声明一个新的变量的情况下,try-with-resources 就可以管理这个资源。

tairan2006:不是。。。你这把 try 的两种用法混合双打?

如果我们使用try-with-resource,是否需要关闭资源 - java

我在代码中使用try-with-resource块,想知道是否需要在方法末尾关闭资源?try (S3Object object = s3.getObject(new GetObjectRequest(bucketName, key)); BufferedReader br = new BufferedReader(new InputStreamReader(…

在catch子句中终止程序的良好做法是什么 - java

我有一个方法抛出异常public int myMethod throws Exception 我还有另一个函数调用myMethod函数和hava try-catch块。我抛出了运行时异常以强制终止程序。这是终止程序的正确方法吗?如果我这样做,它将打印两次堆栈跟踪,并且RuntimeException中的堆栈跟踪没有用。在catch子句中终止程序并打印完整堆栈…

是Java中的捕获方法吗? - java

我已经搜索了一些答案,但是找不到,因此我将其作为一个新问题提出。 try-catch中的catch方法。是方法吗? ,它以Exception类型的对象作为参数。但是如果是一种方法,谁调用此方法,以及该对象由哪个对象调用? 您通常无法在另一个方法定义内编写一个方法定义。因此,如果它是一个方法,我如何在另一个方法内编写捕获? 如果它不是方法,那是什么? publ…

如果在打开新的流之间处理IO流,那么最好使用单个try-finally块还是嵌套try-with-resources更好? - java

因此,以某种方法,我将打开一个新的IO流,对其进行一些处理,然后使用该流作为输入来打开另一个IO流。我不相信我可以使用单个try-with-resources块,因为在打开第一个和第二个流之间使用第一个IO流进行处理。因此,在编码设计的意义上,使用单个try-catch-finally块来打开和关闭这些流,或者使用嵌套的try-with-resources块…

BufferedReader的正确用法 - java

我使用以下样式通过BufferedReader读取文件try (BufferedReader br = new BufferedReader(new FileReader("my_file"))) { ... br.close(); } catch( IOException e ) { System.out.println( e.getM…