草庐IT

Try-catch

全部标签

java - try/catch 是不是很耗资源的操作?

我听说与其抛出异常并在try/catchblock中捕获它们,不如在方法中返回null更合理,因为try/catch是消耗资源的操作。这是真的吗? 最佳答案 Try/catch仅在抛出异常时占用大量资源,否则几乎不需要。当它们使程序更干净时使用它们。返回null也可以。这取决于 关于java-try/catch是不是很耗资源的操作?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/

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 - 最佳实践 : catching failure points in java.net.URL

JVM新手,使用Scala和Play2.0我正在将一个遗留应用程序转换为Play,一个需要通过Authorize.net进行支付处理的应用程序。查看java.net.URL源代码,有许多潜在的失败点。鉴于我在下面编写的接口(interface),您将在哪里实现try/catchblock?我需要相应地调整方法签名,可能会返回一个Either[Error,Success]来调用客户端代码importjava.net.{URL,URLEncoder}importjava.io.{BufferedReader,DataOutputStream,InputStreamReader}import

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