草庐IT

Try-Catch-Finally

全部标签

java - 为什么 Java multi-catch 不能处理通过子类关联的类型?

这是一段不能编译的代码:voidmultiCatch(){try{throwIOFile();}//FileNotFoundExceptionextendsIOException,hencethis//doesnotcompile("alternatives"relatedbysubclassing):catch(IOException|FileNotFoundExceptione){}}voidthrowIOFile()throwsIOException,FileNotFoundException{}如果没有通过子类关联异常类型,一切都像魅力一样。如果您将我的代码片段中的IOExce

java - 如何将 catch finally 重组为 Java 8 中的一种方法?

Java8的新手,我想优化我的代码如下:publicResponsecreate(){try{...}catch(Exceptione){codeA;}finally{codeB;}}publicResponseupdate(){try{...}catch(Exceptione){codeA;}finally{codeB;}}我有很多方法使用相同的方式来捕获异常并最终执行相同的操作,是否可以用Java8中的方法替换下面的通用代码?这样我就可以优化使用此公共(public)代码的所有方法。}catch(Exceptione){codeA;}finally{codeB;}

java - 清理 finalize() 或 finally() 中的代码?

我一般认为资源清理是在finallyblock中完成的,最近我在一个类中发现了这个特定的代码片段,它覆盖了Object类'finalize()方法。protectedvoidfinalize(){try{In.close();Out.close();socket.close();}catch(Exceptione){//loggercodehere}}这是个好主意吗?finalize()相对于finally的优缺点是什么? 最佳答案 finallyblock只是一个始终在tryblock之后执行的代码块,即使出现异常也是如此。即它在

java - 关于多个 'catch'的问题

谁能告诉我为什么这个类的输出是'xa'?为什么另一个异常(RuntimeException和Exception)不会被捕获?publicclassTree{publicstaticvoidmain(String...args){try{thrownewNullPointerException(newException().toString());}catch(NullPointerExceptione){System.out.print("x");}catch(RuntimeExceptione){System.out.print("y");}catch(Exceptione){Sys

java - 您如何设计一个不全是 try/catch block 的服务层?

在设计SpringMVC应用程序时,@ExceptionHandler注释由我们在REST层中使用。这通过将异常处理卸载到一组半通用处理程序来极大地消除Controller方法的困惑。我们服务的基本架构是这样的:[RESTAPI][ApplicationServices][DataLayer]我相信REST层Controller不应该直接处理数据层异常,而应该只处理应用程序服务异常。但是,这意味着我所有的应用程序服务方法基本上必须如下所示:publicDomainObjectgetSomeDomainObjectById(Stringid){DomainObjectretVal=nul

java - catch 和 finally 中 return 语句的行为

publicclassJ{publicIntegermethod(Integerx){Integerval=x;try{returnval;}finally{val=x+x;}}publicstaticvoidmain(String[]args){JlittleFuzzy=newJ();System.out.println(littleFuzzy.method(newInteger(10)));}}它将返回“10”。现在我只是将ReturntypeInteger替换为StringBuilder并且Output已更改。publicclassI{publicStringBuildermet

java - 错误 : detached entity passed to persist - try to persist complex data (Play-Framework)

我在通过PlayFramework持久化数据时遇到问题。也许不可能达到那个结果,但如果它能奏效那就太好了。简单:我有一个复杂的模型(带地址的商店),我想立即更改带地址的商店并以相同的方式存储它们(shop.save())。但是错误detachedentitypassedtopersist发生了。更新历史05.1105.11使用属性mappedBy="shop"更新模型商店更新指向google用户组的链接09.11找到解决方法,但不是通用的16.11更新示例html表单,感谢@Pavel将解决方法(更新09.11)更新为通用方法,感谢@mericano121.11我放弃了寻找解决方案并等

java - catch block 是否能够捕获 Throwable(包括错误和异常)

在我的一次采访中,他们问我,是否可以像这样在catch()中编写Throwabletry{somecode}catch(Throwablet){}我说是的。它不会给出编译时错误,但如果发生Error(Throwable的子类),jvm将不会处理它,因为错误是jvm无法处理的不可逆条件。而不是他们进一步询问写Throwable有什么用。请给我适当的答复,我们可以在catch中使用Throwable吗?如果是,为什么。 最佳答案 可以捕获Throwable。是的,您还会捕获java.lang.Error的实例,这在涉及到例如OutOfM

youtube - Google 搜索中的片段包含 "An error occurred. Try watching this video on www.youtube.com",但我没有任何视频

当我尝试使用Google搜索我的网站时,为什么会收到此消息?我的索引页上没有任何类型的视频....我只有登录表单Logo和注册表以及和我的元说:为什么我的主标题链接发生了错误?对于下面的视频也一样。 最佳答案 我自己刚遇到这个问题,找到了原因:如果您使用iframe嵌入YouTube视频,并检查iframe的来源,您将看到如下部分:Anerroroccurred.[...]由于Google并不总是使用中的文本您提供的标签,并且由于该错误消息在内,我认为谷歌正在将YouTube的错误消息推广到标题中,因为与大多数浏览器不同,它采用部分

laravel - Vue 路由器历史模式结合 laravel catch all 重定向 404 header 给出 200 header 状态码

我在Laravel后端有一个Vue项目,SEO对其很重要。使用我当前的设置,我将所有传入请求重定向到我的Vue应用程序。在我的Vue应用程序中,我使用VueRouter处理路由。在我的设置中,无法识别的页面被定向到我喜欢的组件(404组件),但浏览器获得200状态代码。我的问题是:如何为浏览器提供正确的404状态代码?我的代码摘要:从Laravel(web.php文件)中将所有内容重定向到我的Vue应用程序:Route::get('/{catchall?}',function(){returnview('app');})->where('catchall','.*');在我的Vue路由