Java之异常

Java 异常

  • 异常概念
    • 异常分类
    • 异常体系图
  • 异常祖类Throwable
    • 结构图
    • Error
    • Exception
    • Unchecked Exception 非检查型异常
    • Checked Exception 检查型异常
  • 处理异常
    • 抛出异常
      • throw

异常概念

异常一般我们未能意料到的情况,可能是系统或者环境问题造成,也可能是程序逻辑不严谨导致的错误

异常分类

异常:可以理解是在程序运行中发生的错误或者意料之外的情况

分为 编译期异常运行期异常

  1. 编译期异常:比如少括号,少分号,在编译期间就可以发现并且改正
  2. 运行期异常:在程序运行期间出现的错误,一般无法预知,比如空指针异常,数组索引越界

异常体系图

Java之异常_第1张图片

异常祖类Throwable

结构图

Java之异常_第2张图片

Error

Error是程序无法处理的错误,表示运行应用程序里较严重的问题

它们在应用程序的控制和处理能力之外,而且绝大多数是程序运行时,不允许出现的情况

对于设计合理的程序来说,如果发生Error,也无法处理

常见的Error有:
VirtualMachineError:虚拟机错误
OutOfMemoryError:内存溢出
ThreadDeath:线程死锁
Java之异常_第3张图片

Exception

Exception:是程序本身可以处理的异常
异常处理就是对此类异常进行处理

Exception分为两类:检查异常和非检查异常
Java之异常_第4张图片

Unchecked Exception 非检查型异常

非检查异常就是 RuntimeException异常及其子类,
此类异常不要求强制处理,开发过程中可以不处理

但是此类异常的出现,往往是程序代码中的错误,我们要做的是修正代码中造成此类异常出现的错误代码。

RuntimeException常见异常:
1、NullPointerException:空指针异常。
改进:代码里先判断一下对象是否为空,再进行下一步操作
2、ArrayIndexOutOfBoundException:数组索引越界异常
改进:对数组元素操作之前,先判断该元素索引是否小于数组元素个数减一
3、ArithmeticException:算数异常
4、ClassCastException:类型转换异常
改进:在代码里找,类型转换之前的类型是什么,正确对应上
Java之异常_第5张图片
Java之异常_第6张图片

Checked Exception 检查型异常

在Java中的Exception的子类中除了RuntimeException及其子类之外,都是检查型异常
此类异常,就必须进行处理,否则无法通过编译器编译
Java之异常_第7张图片
Java之异常_第8张图片

处理异常

处理异常有两种方式:抛出异常捕捉异常

抛出异常

throw

在方法代码中抛出异常使用关键字 throw,后面紧跟一个异常对象
比如 throw new Exception();
Java之异常_第9张图片
Java之异常_第10张图片
Java之异常_第11张图片

你可能感兴趣的:(Java之异常)