java 异常

异常是什么?

在Java中,异常是一种在程序执行期间发生的不正常情况。当程序遇到异常时,它可能无法继续正常执行,并可能导致程序中断、崩溃或产生错误的结果。异常提供了一种机制,让程序员能够在出现问题时采取适当的措施,而不是简单地中断程序的执行。

异常的分类

Java中的异常可以分为三类:

  1. 检查异常(Checked Exception): 是在编译时由编译器强制检查的异常。这类异常通常表示程序运行环境外的错误,程序员必须在代码中显式地处理这些异常或者通过throws关键字声明方法会抛出这些异常。例如,IOException是一个检查异常。

  2. 非检查异常(Unchecked Exception): 也称为运行时异常,是在运行时由Java虚拟机(JVM)检测到的异常。这类异常通常是由程序中的逻辑错误引起的,例如,NullPointerExceptionArrayIndexOutOfBoundsException。程序员可以选择捕获并处理这些异常,但不强制要求。

  3. 错误(Error): 表示严重的问题,通常是程序无法处理的情况。与异常不同,错误一般不应该被程序员捕获和处理,因为它们通常指示着系统级的问题,例如内存溢出(OutOfMemoryError)。

异常的层次结构

Java中的异常类都继承自Throwable类,而Throwable类有两个主要的子类:ErrorException

  1. Error: 表示程序无法处理的严重问题,通常是系统级的错误。程序员不应该捕获Error类型的异常,因为这通常表示程序无法继续执行。

  2. Exception: 表示程序运行过程中可能会遇到的一般性问题。Exception又分为两大类:

    • 检查异常(Checked Exception): 继承自Exception,除了RuntimeException及其子类外的所有异常都属于检查异常。
    • 非检查异常(Unchecked Exception): 继承自RuntimeException及其子类,通常是由程序中的逻辑错误引起的异常

常见的运行时异常

NullPointerException   空指针异常

ArithmeticException   算术异常

ArrayIndexOutOfBoundsException  数组下标越界异常

InputMismatchException  输入异常

ClassCastException   类转换异常

DateFormateException  日期转化异常

ClassNotFoundException  类找不到异常

IOException   IO异常

SQLExcption   数据库异常

自定义异常

//自定义一个名字为DefinedException的异常
public class DefinedException extends Exception{
    // 添加一个构造方法,可以传递异常信息
    public DefinedException(String msg){
        super(msg);
    }
}
import java.util.Scanner;

public class DefinedExceptionTest {
    
    public static void main(String[] args) throws DefinedException {
        Scanner scanner = new Scanner(System.in);
        //从键盘获取一个用户名
        System.out.println("请输入用户名:");
        String userName = scanner.next();

        /*对获取的用户名进行判断,若不等于admin则用throw new一个异常
        注意:一个throw语句只能抛出一个异常。throw语句后面只能跟随一个异常对象。
        如果你想在同一个代码块中抛出多个异常,你需要使用多个throw语句或者将多个异常封装成一个容器异常一起抛出。*/
        if (!userName.equals("admin")) {
            throw new DefinedException("用户不存在");
        }
    }
}
/*throws 关键字后面可以列举多个异常类型,表示该方法可能抛出这些异常之一。
多个异常类型之间使用逗号进行分隔。*/
public static void main(String[] args) throws DefinedException,Exception {
    // 方法体
}

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丶君莫笑丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值