当前位置:网站首页 > Java教程 > 正文

java捕获多异常教程



摘要:Java中多重异常捕获机制可以更加简洁、有效地处理多个异常,提高了程序的鲁棒性,是编写高质量代码的重要技巧之一。

  小编在《浅谈Java异常处理机制》中梳理了异常处理机制,在《Java 异常处理try、catch、finally和return执行顺序》中介绍了异常处理时,try、catch、finally和return的执行顺序,本文介绍如何使用catch捕获多个异常。

  当我们编写代码时,经常会遇到异常,如文件不存在、空指针、数组下标越界等等异常。因为异常的发生可能会导致程序崩溃,因此需要对异常进行捕获和处理。对异常处理有三个核心关键字:try、catch、finally,常用使用方法如下:

 

  我们在try语句中捕获可能出现异常的代码。如果try捕获到异常,则会与和它匹配的catch中的异常类型依次进行比对,如果相同则进行处理;如果不匹配,则继续匹配后续的catch类型;如果都不匹配,那么表示该异常无法由catch块处理,需要采用JVM默认的异常处理方式进行处理。最后不管有没有异常,都会执行finally中的语句块。温馨提示:finally语句块可以省略,如果省略,则在执行完catch语句块之后,程序继续执行后边的代码。

  Java提供的 catch 代码块虽然客观上提高了程序的健壮性,但是也导致了程序代码量大大增加。如果有些异常种类不同,但捕获之后的处理逻辑是相同的,例如把methodB换成了methodA,则可以使用如下多重异常捕获技术:

 

  什么是多重异常捕获?就是在同一个catch语句块中捕获多种不同的异常,多个异常类型之间使用管道符隔开。

  使用多重异常捕获时,如下几点需要各位老铁注意:

  • 多种异常类型之间用管道符隔开。
  • 捕获多种类型的异常时,异常变量被隐式的 final 修饰,因此不能对异常变量重新赋值。
  • 在捕捉异常时,请记录异常信息,以便定位问题。
  • 多个异常类型必须是从小到大排列,即父类异常必须放在子类异常之后,这是因为Java会优先匹配catch语句的第一个参数。
  • 尽可能使用特定的异常类型来捕获异常。这可以帮助你更准确地识别问题,并采取适当的措施。例如,如果你正在处理文件读取错误,则可以捕获FileNotFoundException异常。
  • 避免捕获所有异常。这可能会掩盖真正的问题,并使调试变得更加困难。相反,只捕获你预计可能会出现的异常。

  下面程序示范了多异常捕获。

 

  上面程序中第一个catch块使用了来定义需要拦截的异常类型,它表明该 catch 块可以同时捕获这 3 种类型的异常。捕获多种类型的异常时,异常变量使用隐式的 final 修饰,因此如果去掉前面的注释,代码将产生编译错误,提示;但是,捕获一种类型的异常时,异常变量没有被final关键词修饰,因此可以编译通过。

  由于NumberFormatException是Exception的子类,所以,把Exception放在了NumberFormatException后面;否则,后者起不到作用。

版权声明


相关文章:

  • 指令教程大全java2024-12-31 19:58:06
  • java多态视频教程2024-12-31 19:58:06
  • java 进阶教程2024-12-31 19:58:06
  • java教程全英文2024-12-31 19:58:06
  • java for android视频教程2024-12-31 19:58:06
  • java文件菜鸟教程2024-12-31 19:58:06
  • java教程wsdl2024-12-31 19:58:06
  • java整套教程2024-12-31 19:58:06
  • java网络编程udp教程2024-12-31 19:58:06
  • java数据控制教程2024-12-31 19:58:06