Java中的异常

Posted 刘润森!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中的异常相关的知识,希望对你有一定的参考价值。

一、什么是异常

1.1 Java中的异常

我们每天开车去上班,都有可能碰到堵车、撞车等情况发生,在使用电脑时,突然断电或蓝屏等情况时有发生,这些突发情况就是异常。在程序运行过程也会出现非正常状况,如磁盘空间不足、网络连接中断、除数为零等,这些在程序运行过程发生的不正常的事件就是程序的异常,它会中断正在运行的程序。
【例1.1-01】阅读下列程序


当b的值为0时,发生异常,并中断了程序的执行。

1.2 Java中常见的异常类

方 法 名说 明
Exception异常层次结构的根类,代表以下所有异常
ArithmeticException算术错误情形,如以零作除数
ArrayIndexOutOfBoundsException数组下标越界
NullPointerException尝试访问 null 对象成员
ClassNotFoundException不能加载所需的类
InputMismatchException欲得到数据类型与实际输入类型不匹配
IllegalArgumentException方法接收到非法参数
ClassCastException对象强制类型转换出错
NumberFormatException数字格式转换异常,如把"abc"转换成数字

二、异常处理机制

当开车上班时在路碰到堵车等突发情况,我们可能已经想好了预备方案,绕行或等待,绝不会因为会出现突发情况而影响出行或上班。同理,当程序发生异常时,我们也应在程序中预先想好了对付异常的处理办法 ,使程序正常运行,这就是程序的异常处理机制。
Java异常处理有三种机制:捕获异常、声明异常和抛出异常。

2.1 捕获异常

1、使用try-catch块捕获异常


【例2.1-01】捕获异常

2、在catch块中处理异常

调用异常对象的方法输出异常信息

方法名说 明
void printStackTrace()输出异常的堆栈信息
String getMessage()返回异常信息描述字符串,是printStackTrace()输出信息的一部分

3、finally代码块

在try-catch块后加入finally块,可以确保无论是否发生异常,finally块中的代码总能被执行。


【例2.1-02】finally代码块


2.2 声明异常

如果方法中代码发生异常,编写者不想在方法中处理或者不能在方法中处理,将异常处理的权限交给调用者,Java允许在方法中允许声明可能发生的异常,由调用者在调用方法时,强制其捕获异常。

【例2.2-01】声明异常

2.3 抛出异常

在程序中,除了系统自动抛出异常外,有些问题需要程序员自行抛出异常。
throw new Exception(异常信息)
一般在方法中抛出异常,并在方法声明异常。
【例2.3-01】抛出异常

三、异常分类

  • Error:错误类,表示Java程序运行时资源耗尽或系统内部错误,这类错误属于严重错误,程序本身不能修复。
  • Exception:异常类,程序本身是可以处理的错误。
    • 编译时异常:除了RuntimeException异常都是编译时异常。Java会对异常进行检查,如果有异常就必须对异常进行处理,否则编译不能通过,这类异常也称为checked异常。
    • 运行时异常:RuntimeException异常,Java编译器不会对此类异常进行检查,不需要进行异常处理,是程序在运行过程发生的逻辑错误,也称为非checked异常。

以上是关于Java中的异常的主要内容,如果未能解决你的问题,请参考以下文章

Java中的Exception

Java后端总结

Java异常处理

新手小白学习Java异常处理这一篇就够了

挑战高薪必看:《深入理解java虚拟机 jvm高级特性与最佳实践》

JVM学习-java内存区域与异常