Java的异常(异常和处理方式)

一、异常的理解

  1. 异常的定义
    异常是指程序运行过程中出现的非正常的情况。

  2. 异常的分类

    • 父类Throwable,位于 java.lang 包中。
    • 子类
      • Error错误
      • Exception异常

二、异常分类

1. 父类:Throwable
  • 特点
    Throwable 是所有错误或异常的父类。

  • 常见方法

    • printStackTrace():获取异常详细信息,用于调试。
    • getMessage():获取字符串类型的异常信息。

示例代码

public class ThrowableExample {
    public static void main(String[] args) {
        try {
            int result = 10 / 0; // 会抛出异常
        } catch (ArithmeticException e) {
            e.printStackTrace(); // 打印异常信息
            System.out.println("异常信息: " + e.getMessage());
        }
    }
}

2. 子类:Error

  • 特点
    • 用于表示程序中无法恢复的严重问题,例如:内存溢出、栈溢出。
    • 程序无法通过代码处理此类错误。

常见情况

  • java.lang.StackOverflowError:栈溢出
  • java.lang.OutOfMemoryError:内存溢出

示例代码

public class ErrorExample {
    public static void recursiveMethod() {
        recursiveMethod(); // 无限递归,触发栈溢出
    }

    public static void main(String[] args) {
        try {
            recursiveMethod();
        } catch (Throwable e) {
            System.out.println("捕获到错误: " + e);
        }
    }
}

输出(示例):

捕获到错误: java.lang.StackOverflowError

3. 子类:Exception
  • 特点
    Exception 表示异常,分为 运行时异常非运行时异常
(1) 运行时异常 (RuntimeException)
  • 特点:编译时不需要处理,可以选择忽略。
  • 常见异常
    • ArrayIndexOutOfBoundsException:数组下标越界
    • NullPointerException:空指针异常
    • NumberFormatException:数字格式异常

示例代码

public class RuntimeExceptionExample {
    public static void main(String[] args) {
        try {
            String str = null;
            System.out.println(str.length()); // 空指针异常
        } catch (NullPointerException e) {
            System.out.println("捕获到空指针异常: " + e.getMessage());
        }
    }
}

输出

捕获到空指针异常: null

(2) 非运行时异常 (编译时异常)
  • 特点:必须在编译时处理(使用 try-catchthrows)。
  • 常见异常
    • IOException:输入输出异常
    • ClassNotFoundException:类未找到异常

示例代码

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class CheckedExceptionExample {
    public static void main(String[] args) {
        try {
            File file = new File("test.txt");
            FileInputStream fis = new FileInputStream(file);
            System.out.println("文件已找到");
        } catch (IOException e) {
            System.out.println("捕获到异常: 文件未找到");
        }
    }
}

输出(文件不存在时):

捕获到异常: 文件未找到

三、总结

  1. Throwable 是异常和错误的根类。
  2. Error:代表严重错误,程序无法处理,如内存溢出。
  3. Exception:可处理的异常,分为:
    • 运行时异常:程序运行时出现,如空指针异常。
    • 非运行时异常:编译时必须处理,如文件未找到异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值