Java基础之异常机制

简介: Java基础之异常机制

Java有着非常强大的异常处理机制,异常的祖先是Throwable,有如下两个子类:


      Error:表示错误,错误产生后程序员不能通过代码的方式纠正,只能事先避免,好比生命已经停止。


      Exception:表示异常,异常产生后程序员可以通过代码的方式纠正,使程序继续运行,是必须要处理的


异常分为编译时异常和运行时异常。


编译时异常又叫编译时被监测的异常:在程序编译过程中监测到非运行时异常的异常,出现该异常要么向上抛出,要么捕获处理。


运行时异常(runtimeException及其子类):在程序编译过程中监测到出现运行时异常,函数上或内部可以直接抛出异常,不需要捕获和声明。


总体异常的分类

image.png


处理异常的方式

    抛出异常  throw  


    声明异常  throws      向上抛出


    异常捕获  try-catch   自己处理


static  String[] usernames={"张三","赵四","王五"};
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入注册的名字!");
        String next = sc.next();
        //try-catch捕获异常
        try {
            checkUsername(next);
        } catch (RegisterException e) {
            e.printStackTrace();
        }
    }
    public static void checkUsername(String usrename) throws RegisterException {//声明异常
        for (String name : usernames) {
            if (name.equals(usrename)){
                throw new RegisterException("亲,该用户已经被注册!");//抛出异常
            }
        }
        System.out.println("恭喜您,注册成功!");
    }

打印异常的方法

    public String getMessage() :获取异常的描述信息,原因(提示给用户的时候,就提示错误原因。


    public String toString() :获取异常的类型和异常描述信息(不用)。


    public void printStackTrace() :打印异常的跟踪栈信息并输出到控制台


具有继承关系的异常

如果父类抛出了多个异常,子类重写父类方法时,抛出和父类相同的异常或者是父类异常的子类或者不抛出异常。


父类方法没有抛出异常,子类重写父类该方法时也不可抛出异常。此时子类产生该异常,只能捕获处理,不能声明抛出


自定义异常类

需要继承Exception(编译器异常)或者RunTimeException(运行时异常)

public class RegisterException extends Exception {
  public RegisterException() {
  }
  public RegisterException(String message){
     super(message);
  }
}
相关文章
|
12天前
|
Java 数据库连接 开发者
Java的Shutdown Hook机制:优雅地关闭应用程序
Java的Shutdown Hook机制:优雅地关闭应用程序
19 1
|
14天前
|
Java 程序员 开发者
深入理解Java并发编程:线程同步与锁机制
【4月更文挑战第30天】 在多线程的世界中,确保数据的一致性和线程间的有效通信是至关重要的。本文将深入探讨Java并发编程中的核心概念——线程同步与锁机制。我们将从基本的synchronized关键字开始,逐步过渡到更复杂的ReentrantLock类,并探讨它们如何帮助我们在多线程环境中保持数据完整性和避免常见的并发问题。文章还将通过示例代码,展示这些同步工具在实际开发中的应用,帮助读者构建对Java并发编程深层次的理解。
|
4天前
|
Java 索引
【JAVA基础篇教学】第七篇:Java异常类型说明
【JAVA基础篇教学】第七篇:Java异常类型说明
|
1天前
|
消息中间件 安全 前端开发
字节面试:说说Java中的锁机制?
Java 中的锁(Locking)机制主要是为了解决多线程环境下,对共享资源并发访问时的同步和互斥控制,以确保共享资源的安全访问。 锁的作用主要体现在以下几个方面: 1. **互斥访问**:确保在任何时刻,只有一个线程能够访问特定的资源或执行特定的代码段。这防止了多个线程同时修改同一资源导致的数据不一致问题。 2. **内存可见性**:通过锁的获取和释放,可以确保在锁保护的代码块中对共享变量的修改对其他线程可见。这是因为 Java 内存模型(JMM)规定,对锁的释放会把修改过的共享变量从线程的工作内存刷新到主内存中,而获取锁时会从主内存中读取最新的共享变量值。 3. **保证原子性**:锁
13 1
|
2天前
|
安全 Java 数据安全/隐私保护
Java一分钟之-Java反射机制:动态操作类与对象
【5月更文挑战第12天】本文介绍了Java反射机制的基本用法,包括获取Class对象、创建对象、访问字段和调用方法。同时,讨论了常见的问题和易错点,如忽略访问权限检查、未捕获异常以及性能损耗,并提供了相应的避免策略。理解反射的工作原理和合理使用有助于提升代码灵活性,但需注意其带来的安全风险和性能影响。
17 4
|
3天前
|
前端开发 Java 应用服务中间件
【异常解决】java程序连接MinIO报错The request signature we calculated does not match the signature you provided.
【异常解决】java程序连接MinIO报错The request signature we calculated does not match the signature you provided.
10 0
|
4天前
|
Java 关系型数据库 MySQL
【JAVA进阶篇教学】第八篇:Java链接MySql数据库异常
【JAVA进阶篇教学】第八篇:Java链接MySql数据库异常
|
5天前
|
Java 数据安全/隐私保护
java中异常处理机制
java中异常处理机制
11 1
|
5天前
|
算法 安全 Java
深入探索Java中的并发编程:CAS机制的原理与应用
总之,CAS机制是一种用于并发编程的原子操作,它通过比较内存中的值和预期值来实现多线程下的数据同步和互斥,从而提供了高效的并发控制。它在Java中被广泛应用于实现线程安全的数据结构和算法。
21 0
|
6天前
|
Java API 开发者
解密Java反射机制与动态代理
解密Java反射机制与动态代理
11 0