草庐IT

Try-catch

全部标签

java - 使用 try-with-resources 悄悄关闭资源

是否可以忽略使用try-with-resources语句关闭资源时引发的异常?例子:classMyResourceimplementsAutoCloseable{@Overridepublicvoidclose()throwsException{thrownewException("Couldnotclose");}publicvoidread()throwsException{}}//thismethodprintsanexception"Couldnotclose"//Iwanttoignoreitpublicstaticvoidtest(){try(MyResourcer=new

java - 使用 try-with-resources 悄悄关闭资源

是否可以忽略使用try-with-resources语句关闭资源时引发的异常?例子:classMyResourceimplementsAutoCloseable{@Overridepublicvoidclose()throwsException{thrownewException("Couldnotclose");}publicvoidread()throwsException{}}//thismethodprintsanexception"Couldnotclose"//Iwanttoignoreitpublicstaticvoidtest(){try(MyResourcer=new

try catch 嵌套

实践测试在单元测试中写入以下方法:testMain()主方法,out()里面嵌套了两层trycatch异常代码写在内层try中示例一:@TestpublicvoidtestMain(){out();log.info("后续处理业务");}publicvoidout(){//外层trytry{System.out.println("外层输出");//内层trytry{inti=2/0;//异常代码}catch(Exceptione){log.error("内层异常",e);}}catch(Exceptione){log.error("外层异常",e);}}日志信息:外层输出20:38:27.17

java - 在 Java 中如何以及在哪里定义自己的异常层次结构?

您如何以及在哪里定义自己的Java异常层次结构?我的主要问题涉及必须定义异常类的包位置。我们是否为我们的异常创建一个特殊的包并将所有类放入其中? 最佳答案 我将此作为一般规则。在有意义的地方,使用预定义的Java异常。例如,如果您的代码有某种I/O错误,则可以抛出IOException。仅当您需要区分try/catchblock中的两个异常时才使用异常层次结构。很多时候,让单个组件针对不同的错误抛出具有不同消息的单个异常类型是完全可以的。如果用户真的不能做任何事情来专门处理错误,请使用相同的通用异常类。如果用户能够以不同的方式处理它

java - 在 Java 中如何以及在哪里定义自己的异常层次结构?

您如何以及在哪里定义自己的Java异常层次结构?我的主要问题涉及必须定义异常类的包位置。我们是否为我们的异常创建一个特殊的包并将所有类放入其中? 最佳答案 我将此作为一般规则。在有意义的地方,使用预定义的Java异常。例如,如果您的代码有某种I/O错误,则可以抛出IOException。仅当您需要区分try/catchblock中的两个异常时才使用异常层次结构。很多时候,让单个组件针对不同的错误抛出具有不同消息的单个异常类型是完全可以的。如果用户真的不能做任何事情来专门处理错误,请使用相同的通用异常类。如果用户能够以不同的方式处理它

java try finally 阻止关闭流

我想在finallyblock中关闭我的流,但它会抛出一个IOException所以我似乎必须在我的finally中嵌套另一个tryblockblock以关闭流。这是正确的方法吗?好像有点笨重。代码如下:publicvoidread(){try{r=newBufferedReader(newInputStreamReader(address.openStream()));StringinLine;while((inLine=r.readLine())!=null){System.out.println(inLine);}}catch(IOExceptionreadException){

java try finally 阻止关闭流

我想在finallyblock中关闭我的流,但它会抛出一个IOException所以我似乎必须在我的finally中嵌套另一个tryblockblock以关闭流。这是正确的方法吗?好像有点笨重。代码如下:publicvoidread(){try{r=newBufferedReader(newInputStreamReader(address.openStream()));StringinLine;while((inLine=r.readLine())!=null){System.out.println(inLine);}}catch(IOExceptionreadException){

java:尝试最终阻止执行

这个问题在这里已经有了答案:DoesafinallyblockalwaysgetexecutedinJava?(51个回答)Strangefinallybehaviour?[duplicate](7个回答)关闭9年前。当tryblock中存在return;时,我对try-finally的执行感到困惑。在我的理解中,finallyblock总是会被执行,即在返回调用方法之前。在考虑以下简单代码时:publicclassTryCatchTest{publicstaticvoidmain(String[]args){System.out.println(test());}staticintt

java:尝试最终阻止执行

这个问题在这里已经有了答案:DoesafinallyblockalwaysgetexecutedinJava?(51个回答)Strangefinallybehaviour?[duplicate](7个回答)关闭9年前。当tryblock中存在return;时,我对try-finally的执行感到困惑。在我的理解中,finallyblock总是会被执行,即在返回调用方法之前。在考虑以下简单代码时:publicclassTryCatchTest{publicstaticvoidmain(String[]args){System.out.println(test());}staticintt

java - 在什么情况下 finally {} block 不会执行?

在Javatry{}...catch{}...finally{}block中,finally{}中的代码通常被认为是“保证”无论try/catch中发生什么,都运行。但是,我知道它至少不会执行的两种情况:如果System.exit(0)被调用;或者,如果异常一直抛出到JVM并且发生默认行为(即,printStackTrace()并退出)是否有任何其他程序行为会阻止finally{}block中的代码执行?代码会在什么特定条件下执行?编辑:正如NullUserException所指出的,第二种情况实际上是不正确的。我认为这是因为标准错误中的文本在标准输出之后打印,防止在不向上滚动的情况下