try-catch 不仅可以嵌套在 try 代码块中,还可以嵌套在 catch 代码块或 finally 代码块,finally 代码块后面会详细介绍。try-catch 嵌套会使程序流程变的复杂,如果能用多catch捕获的异常,尽量不要使用 trycatch 嵌套。特别对于初学者不要简单地使用Eclipse的语法提示不加区分地添加 try-catch 嵌套,要梳
public class ExceptionHierarchyExample { public static void main(String[] args) { // 处理已检查的异常 try { FileInputStream file = new FileInputStream("nonexistentfile.txt"); } catch (FileNotFoundException e) { System.out.println("Checked Exception: " + e.getMessage()); } // 处理未检...
1. try-catch块 try块用于包围可能会抛出异常的代码,catch块用于捕获并处理这些异常。 java try { // 可能会抛出异常的代码 } catch (ExceptionType1 e1) { // 处理ExceptionType1类型的异常 } catch (ExceptionType2 e2) { // 处理ExceptionType2类型的异常 } finally { // 无论是否发生异常都会执行的代...
publicclassExceptionExample{publicstaticvoidmain(String[]args){try{// 可能会抛出异常的代码thrownewSpecificException();}catch(Exceptione){// 捕获异常并进行处理if(einstanceofSpecificException){// 异常是 SpecificException 类型System.out.println("捕获到了 SpecificException 异常!");}else{// 异常不是 Sp...
public void foo() throws SpecificException1, SpecificException2 { //正确方式 } 1. 2. 3) 捕获具体的子类而不是捕获Exception类 try { someMethod(); } catch (Exception e) { //错误方式 LOGGER.error("method has failed", e); } 1.
publicvoidfoo()throws SpecificException1,SpecificException2{// 正确的方式} 1.3 不要捕获所有异常,而是捕获特定的子类 代码语言:javascript 代码运行次数:0 运行 AI代码解释 try{someMethod();}catch(Exception e){LOGGER.error("method has failed",e);} ...
当有多个catch块中,按照捕获顺序只有第一个匹配到的catch块才能执行。因此,如果先捕获IllegalArgumentException,那么则无法运行到对NumberFormatException的捕获。 publicvoidcatchMostSpecificExceptionFirst(){try{ doSomething("A message"); }catch(NumberFormatException e) { ...
您可以在以下代码片段中看到这样的try-catch语句的示例。第一个catch块处理所有NumberFormatException,第二个所有IllegalArgumentException,它们不是NumberFormatException。public void catchMostSpecificExceptionFirst() { try { doSomething("A message"); } catch (NumberFormatException e) { log.error(e...
public void foo() throws SpecificException1, SpecificException2 { //正确做法 } ### 始终只捕获那些可以处理的异常 catch (NoSuchMethodException e) { throw e; //这代码一点用都没有 } 这是一个基本概念,当你能够处理他时,你再捕获这个异常,否则永远都不要捕获他。如果你不能在catch块中处理它,那么就...
publicvoidfoo()throwsSpecificException1, SpecificException2 {//正确方式} 8、要么记录异常要么抛出异常,但不要一起执行 catch(NoSuchMethodException e) {//错误方式LOGGER.error("Some information", e);throwe; } 记录和抛出异常会在日志文件中产生多条日志消息,代码中存在单个问题 ...