JAVA 异常详解

我们都知道异常,在开发中不可避免的,但是你真的了解异常吗,我也是被面试官好好的上了一课,一问三不知,只知道写代码的过程中,报红的代码会让你自动捕捉异常,或者写一些工具类方法给catch一下exception,后面详细讲一下

在java异常体系中,throwable类是所有异常类的根父类,主要分为两个主要子类

  1. Throwable

    • 作为异常体系的顶层父类,定义了异常处理的基础方法(如getMessage()printStackTrace()
    • Throwable及其子类实例可被throw抛出或catch捕获。
  2. Error

    • 表示JVM或系统级严重错误(如OutOfMemoryError),程序通常无法处理。
    • 属于非检查型异常(unchecked exceptions)。

     3.Exception

                程序可处理的异常,分为两类:

                        RuntimeException‌(如NullPointerException):非检查型异常

                        其他检查型异常(如IOException):需显式处理(try-catchthrows)。

继承关系总结:

Throwable  
├─ Error(系统错误)  
└─ Exception  
   ├─ RuntimeException(运行时异常)  
   └─ 其他检查型异常

对于异常打印总结:

 String getMessage ( ) 返回异常的消息字符串
 String toString ( )返回异常的简单消息描述
 void printStackTrace ( ) 获取异常类名和异常信息以及异常出现在程序中的
    位置,把信息输出到控制台。

1. 编译时异常
在Exception类(所有异常的父类,所有异常都可以捕获)中,除了RuntimeException 类以外,其他子类都是编译时异常。Java 编译器会对编译时异常进行检查,如果出现这类异常就必须对其进行处理,否则程序无法通过编译。
处理编译时异常有两种方式:
使用 try … catch 语句对异常进行捕获处理
使用 throws 关键字 声明抛出异常,由调用者对异常进行处理。


2.运行时异常
RuntimeException 类及其子类都是运行时异常,运行时异常 是在程序运行时,由Java虚拟机自动进行捕获处理,Java编译器不会对异常进行检查。即当程序中出现这类异常时,即使没用 try…catch语句捕获异常,或throws关键字声明抛出异常。程序也能编译通过,只是在运行时可能报错。


运行时异常的形式:
ArithmeticException 算术异常
IndexOutOfBoundsException 索引越界异常
ClassCastException 类型转换异常
NullPointerException 空指针异常
NumberFormatException 数字格式化异常
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值