草庐IT

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 - 为什么 Catch(Exception) 几乎总是一个坏主意?

为什么catch(Exception)几乎总是一个坏主意? 最佳答案 因为当您捕获异常时您应该正确处理它。而且你不能期望在你的代码中处理所有类型的异常。此外,当您捕获所有异常时,您可能会得到一个无法处理的异常,并阻止堆栈中的上层代码正确处理它。一般原则是尽可能捕捉最具体的类型。 关于java-为什么Catch(Exception)几乎总是一个坏主意?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/q

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

Flutter 和 Dart 尝试 catch——catch 不会触发

鉴于下面的简码示例:...print("1parsingstuff");Listsubjectjson;try{subjectjson=json.decode(response.body);}onExceptioncatch(_){print("throwingnewerror");throwException("Erroronserver");}print("2parsingstuff");...我会期望在解码失败时执行catchblock。但是,当返回错误响应时,终端会显示异常,并且不会触发catch和继续代码...flutter:1parsingstuff[VERBOSE-2:u

java - 自动记录在 catch block 中,仅当注释异常变量时,对于 Java 或 Kotlin

我想为Java或Kotlin执行此操作:给出下面的代码try{...}catch(@AutoLoge:Exception){//position1}在构建期间自动在位置1添加一条日志记录语句。我可以使用AspectJ为catchblock添加代码(适用于Java和Kotlin),但它适用于所有catchblock,我无法检查@AutoLog注释是否存在,只有在存在时才添加代码。所以我想我必须求助于Java的APT(注释处理工具)(或Kotlin的KAPT)?顺便说一句,我在这里找到了一个KAPT代码生成示例:https://github.com/JetBrains/kotlin-exa