草庐IT

java - 多次或一次 try catch

这个问题在这里已经有了答案:Multipletry-catchorone?(11个回答)关闭2年前.我正在清理我的一些代码,但我不确定哪条路线会更好。目前,我的大部分方法都有一个trycatchblock,它在最后处理一些单独的异常,但我认为拥有更多的trycatchblock会更好地进行维护。然而,在分解代码时,我发现我正在为同一类型的异常编写多个block。我可以看到为每个部分编写一个block的好处,因为我可以详细说明它失败的原因。我的问题是……这样做有缺点吗?会不会有性能问题或其他一些我没有看到的隐藏怪物?另外,在一个方法中处理多个异常的首选方法是什么,是否有行业标准?为了更好

java - 新的/奇怪的 Java "try()"语法?

在使用Eclipse中的自定义格式选项时,在其中一个示例代码中,我看到了如下代码:/***'try-with-resources'*/classExample{voidfoo(){try(FileReaderreader1=newFileReader("file1");FileReaderreader2=newFileReader("file2")){}}}我从未见过像这样使用try,而且我已经用Java编码9年了!有谁知道你为什么要这样做?这样做的可能用例/好处是什么?我看到的另一段代码,我认为是一个非常有用的速记,所以我也在这里分享它,它的作用很明显:/***'multi-catc

java - 如何在不引发 Java 异常的情况下从 try/catch block 中中断

我需要一种从try/catchblock的中间中断而不抛出异常的方法。类似于for循环中的break和continue的东西。这可能吗?关于抛出一个自定义异常(将其命名为“BreakContinueException”),我一直很奇怪,该异常在其catch处理程序中没有任何作用。我敢肯定这是非常扭曲的。那么,有什么我不知道的直接解决方案吗? 最佳答案 这样做的正确方法可能是通过将try-catchblock放在单独的方法中来分解方法,并使用return语句:publicvoidsomeMethod(){try{...if(condi

java - try-catch 中无限递归的混淆输出

考虑下面的代码。publicclassAction{privatestaticinti=1;publicstaticvoidmain(String[]args){try{System.out.println(i);i++;main(args);}catch(StackOverflowErrore){System.out.println(i);i++;main(args);}}}我将i值正确地提高到4338。捕获StackOverflowError输出后,如下所示。433643374338//uptothispointoutputcanunderstand433943394339//43

Java if 与 try/catch 开销

在Java中使用try/catchblock而不是ifblock是否有任何开销(假设封闭的代码不这样做)?例如,以下两个简单的字符串“安全修剪”方法的实现:publicStringtryTrim(Stringraw){try{returnraw.trim();}catch(Exceptione){}returnnull;}publicStringifTrim(Stringraw){if(raw==null){returnnull;}returnraw.trim();}如果raw输入很少null,这两种方法有什么性能差异?此外,使用tryTrim()是否是一种好的编程模式简化代码布局的方

java - 在java中对每个方法使用一个大的try-catch是一种已知的好习惯吗?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题吗?更新问题,以便editingthispost提供事实和引用来回答它.关闭9年前。Improvethisquestion我最近接受了面试,面试官要我做一个技术测试来看看我的知识。在我完成它之后,他给了我关于我是如何做到的反馈,这是我没想到的,我很感激,因为如果他们不想雇用你,很少有面试官会这样做。他告诉我,他认为我的代码不好的一件事是,我在编写的每个方法中都使用了多个try-catchblock。这引起了我的注意,因为我觉得它很有趣。我认为目前我应该制作try-catchblock,其中存在语义上可区分的代

java - 检查一个字符串是否可以在没有 try-catch 的情况下解析为 Long?

Long.parseLong("string")如果字符串无法解析为long,则会引发错误。有没有办法比使用try-catch更快地验证字符串?谢谢 最佳答案 您可以创建相当复杂的正则表达式,但这并不值得。在这里使用异常是绝对正常的。这是自然的异常(exception)情况:您假设字符串中有一个整数,但实际上还有其他东西。应该抛出异常并正确处理。如果您查看parseLong代码,您会发现有许多不同的验证和操作。如果你想在解析之前做所有这些事情,它会降低性能(如果我们正在谈论解析数百万个数字,否则没关系)。因此,如果你真的需要通过避免

java - 使用 try/catch 进行最终变量赋值

因为我相信这是一种很好的编程习惯,所以我将所有(本地或实例)变量设为final,如果它们打算只编写一次的话。但是,我注意到,当变量赋值可能引发异常时,您不能将所述变量设为final:finalintx;try{x=Integer.parseInt("someinput");}catch(NumberFormatExceptione){x=42;//Compilererror:Thefinallocalvariablexmayalreadyhavebeenassigned}有没有办法在不使用临时变量的情况下做到这一点?(或者这不是最终修饰符的正确位置吗?) 最

使用 try catch block 时的 Spring @Transactional 注释

如果我们在带有@Transactional注解的方法中捕获到异常,如果发生异常会回滚吗?@Transactional(readOnly=false,propagation=Propagation.REQUIRED,rollbackFor=Throwable.class)publicvoidyearEndProcess(){try{//tryblock}catch(Throwablethrowable){//catchblock}} 最佳答案 例如classA{@TransactionalpublicResultdoStuff(){R

java - 获取 "Deadlock found when trying to get lock; try restarting transaction"

我的应用程序(javaspring-core)有多个线程同时运行并访问数据库,我在某些高峰时间遇到异常07:43:33,400WARN[org.hibernate.util.JDBCExceptionReporter]SQLError:1213,SQLState:4000107:43:33,808ERROR[org.hibernate.util.JDBCExceptionReporter]Deadlockfoundwhentryingtogetlock;tryrestartingtransaction07:43:33,808ERROR[org.hibernate.event.def.A