草庐IT

Try-Catch-Finally

全部标签

java - 扩展的 try-with-resources 语句到底捕获了什么?

在下面的代码块中:try(/*resourcesdeclaration*/){//somedangerouscode}catch(Exceptione){//errorhandlingandreporting}如果tryblock中的代码和自动close()语句都抛出异常,会发生什么情况?哪个会被catchblock捕获?两个都?只有其中之一?如果有,是哪一个?此外,如果try成功但close不成功怎么办?会进入catchblock吗? 最佳答案 引自JLS部分14.20.3.1:Inabasictry-with-resources

java - 对于基于 I/O 的流,我应该在 flatMap 中使用 try-with-resource 吗?

AStream是一个AutoCloseable,如果基于I/O,应该在try-with-resourceblock中使用。通过flatMap()插入的基于I/O的中间流怎么样?示例:try(varfoos=foos()){returnfoos.flatMap(Foo::bars).toArray(Bar[]::new);}对比try(varfoos=foos()){returnfoos.flatMap(foo->{try(varbars=foo.bars()){returnbars;}}).toArray(Bar[]::new);}flatMap()文档说:Eachmappedstre

JAVA + try catch(FileNotFoundException e) 进入 catch(Exception e)?

我有一些命令可以在磁盘上创建一个文件。因为必须在其中创建文件的文件夹是动态的,所以我有一个问题(FileNotFoundExceptione)。在同一个tryblock中,我已经有了一个catch(Exceptione)block。出于某种原因,当我运行我的代码并且该文件夹尚不存在时,将使用catch(Exceptione)block,而不是FileNotFoundExceptionblock。虽然调试器很清楚(至少对我而言),但显示了FileNotFoundException:java.io.FileNotFoundException:c:\mydata\2F8890C2-13B9-

java - 如果 catch block 或 finally block 有一些异常会发生什么?

这个问题在这里已经有了答案:Exceptionthrownincatchandfinallyclause(12个答案)关闭8年前。在异常处理中,如果catchblock或者finallyblock出现Exception会怎样?

java - 预期异常时避免空 catch block

我正在尝试使用SimpleDateFormat解析日期。由于我的服务采用多种日期格式,因此我采用了this方法:String[]formats={"yyyy-MM-dd'T'HH:mm:ss.SSSZ","yyyy-MM-dd'T'HH:mm:ss.SSS'Z'","yyyy-MM-dd'T'HH:mm:ss.SSS-HH:mm","EEEMMMddHH:mm:ssZyyyy"};for(Stringformat:formats){try{returnnewSimpleDateFormat(format).parse(dateString);}catch(ParseExceptione

java - 如何在 finally block 中调用 System.exit(0) 后运行代码

我有三个类,比如alpha、beta、gamma,这三个类中的每一个都有一个main方法。alpha和beta类在它们的main方法中都有一个try...catch...finallyblock,如下所示:publicclassalpha{publicstaticvoidmain(String[]args){try{Dosomething;}catch(Exceptionex){ex.printStackTrace();}finally{System.exit(0);}}}publicclassbeta{publicstaticvoidmain(String[]args){try{Do

java - 如何检索 'try' block 中被抑制的异常?

从Java7开始,我们可以使用try-with-resources语句:staticStringreadFirstLineFromFile(Stringpath)throwsIOException{try(BufferedReaderbr=newBufferedReader(newFileReader(path))){returnbr.readLine();}}如果br.readLine()和br.close()都抛出异常,readFirstLineFromFile将throwtryblock的异常(br.readLine()的异常),以及隐式finallyblock的try-with

java - 在 catch 子句中抛出异常

我有两段代码:classPreciseRethrow{publicstaticvoidmain(String[]str){try{foo();}catch(NumberFormatExceptionife){System.out.println(ife);}}staticprivatevoidfoo()throwsNumberFormatException{try{inti=Integer.parseInt("ten");}catch(Exceptione){throwe;}}}和:classPreciseRethrow{publicstaticvoidmain(String[]str

java - 将 Realm 与 try-with-resources 一起使用是一种好习惯吗?

很多地方建议在Activity的onCreate方法中调用Realm.getDefaultInstance(),并调用close在onDestroy中的Realm实例上(或在presenter的相应方法中)。但是,对我来说,使用Java的try-with-resources结构会更干净:try(finalRealmrealm=Realm.getDefaultInstance()){//dostuff}为什么要清洁?IMO更容易管理realm实例的狭窄范围。在生命周期的某个时刻获取实例并在另一个时刻关闭它,这让我想起了过去使用C++的日子,那时我们不得不担心在正确的时刻调用delete。

java - Try/Catch 内部或外部函数

我有一个关于使用try/catch的最佳实践的非常基本的问题。我有一个像这样的简单函数(DAO):publicvoidaddVehicle(Vehiclevehicle){em.getTransaction().begin();em.persist(vehicle);em.getTransaction().commit();}并在网络服务中使用DAO功能:@WebMethod(operationName="addVehicle")publicvoidaddVehicle(Vehiclevehicle){try{vehicleDAO.addVehicle(vehicle);System.