草庐IT

try-Catch

全部标签

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 - 如何说服其他开发人员不要忽略异常?

最近我在从另一个开发人员那里接手的应用程序中遇到了一个错误。我调试了一个多小时后我意识到,问题不是产生异常的代码,而是在返回错误数据之前执行的一些代码。如果我深入研究这个问题,我会遇到以下情况:try{...}catch(XYExceptione){}如果异常会传播(我所做的更改),我会在几分钟内找到错误的原因,因为堆栈跟踪已将我指出问题所在。那么我如何才能说服其他开发人员永远不要以这种方式捕获和忽略异常? 最佳答案 简单的经验法则:当且仅当您有有效的处理异常的方法时才捕获异常。在您的工作场所做任何您需要做的事情来传播这个简单的规则

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 - 为什么 "java.lang.OutOfMemoryError: Java heap space"没有被抓到?

我在JavaWeb应用程序中有一个线程导致java.lang.OutOfMemoryError:Javaheapspace异常,但try/catchblock没有捕获错误。示例代码:privatevoiddoSomeWork(){try{processData();//CausesOutOfMemoryErrorSystem.out.println("Thislinedoesnotexecute");}catch(Exceptione){System.out.println("Exception.Thislinedoesnotexecute.");//Logerror}finally{

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 - 代码覆盖最终阻塞

我有以下代码结构:try{//somecode}catch(CustomExceptioncustExc){//log}catch(CustomException2custExc2){//log}catch(Exceptionexc){//log}finally{//somecode}我编写了单元测试:第一个涵盖了未抛出异常的情况(仅执行tryblock代码和finallyblock代码),另外3个是每个catchblock一次涵盖其中的哪些(执行tryblock,catchblock和finallyblock之一)。问题是EclipseEmma插件显示我没有覆盖finallybloc

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 - 尝试/多接 vs 单接

在Eclipse中添加try/catchblock时,它让我可以选择“Surroundwithtry/multi-catch”或“Surroundwithtry/catch”。这是try/multi-catch:try{save.load(newFileInputStream(file.getAbsolutePath()));}catch(FileNotFoundException|IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}这是单个try/catch:try{save.load(newFileInp