ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

【Java】异常

2026/8/15 23:23:40 拓冰建站 浏览量
【Java】异常

1. 异常的产生和分类

在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。

异常机制其实是帮助我们找到程序中的问题,异常的根类是java.lang.Throwable,其下有两个子类:java.lang.Errorjava.lang.Exception,平常所说的异常指java.lang.Exception

Throwable体系:

  • Error:严重错误Error,无法通过处理的错误,只能事先避免。
  • Exception:表示异常,异常产生后程序员可以通过代码的方式纠正,使程序继续运行,是必须要处理的。
    • RuntimeException:运行时异常,编译阶段不出现异常提醒,运行时出现的异常。(如数组索引越界)
    • 编译时异常。(如日期解析异常)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2. 捕获异常

如果try 中可能遇到多个问题,要写多个 catch 与之对应。如果要捕获多个异常,且异常中存在父子关系,那么父类一定要写在下面。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

也可以同时捕获多个异常:

catch(ArrayIndexOutOfBoundsException | ArithmeticException){}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3. 抛出异常 throw 和声明异常 throws

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

关键字throws运用于方法声明之上,用于表示当前方法不处理异常,而是提醒该方法的调用者来处理异常(抛出异常).

public class ThrowsDemo {public static void main(String[] args) throws FileNotFoundException {read("a.txt");}// 如果定义功能时有问题发生需要报告给调用者。可以通过在方法上使用throws关键字进行声明public static void read(String path) throws FileNotFoundException {if (!path.equals("a.txt")) {//如果不是 a.txt这个文件 // 我假设  如果不是 a.txt 认为 该文件不存在 是一个错误 也就是异常  throwthrow new FileNotFoundException("文件不存在");}}
}

4. finally

try…catch…finally:需要处理异常,finally里面代码必须执行。

注意:finally不能单独使用。

public class TryCatchDemo4 {public static void main(String[] args) {try {read("a.txt");} catch (FileNotFoundException e) {//抓取到的是编译期异常  抛出去的是运行期 throw new RuntimeException(e);} finally {System.out.println("不管程序怎样,这里都将会被执行。");}System.out.println("over");}/*** 我们 当前的这个方法中 有异常  有编译期异常*/public static void read(String path) throws FileNotFoundException {if (!path.equals("a.txt")) {//如果不是 a.txt这个文件 // 我假设  如果不是 a.txt 认为 该文件不存在 是一个错误 也就是异常  throwthrow new FileNotFoundException("文件不存在");}}
}