目录
一、异常概念
一、什么是异常
指程序在运行过程中,出现的非正常的情况,最终会导致java虚拟机(jvm)的非正常停止。
二、异常产生原因:
在 Java 中一个异常的产生,主要有如下三种原因:
(1)Java 内部错误发生异常,Java 虚拟机产生的异常。
(2)编写的程序代码中的错误所产生的异常,例如空指针异常、数组越界异常等。这种异常称为未检査的异常,一般需要在某些类中集中处理这些异常。
(3)通过 throw 语句手动生成的异常,这种异常称为检査的异常,一般用来告知该方法的调用者一些必要的信息。
三、异常使用原则:
Java 异常强制用户考虑程序的强健性和安全性。异常处理不应用来控制程序的正常流程,其主要作用是捕获程序在运行时发生的异常并进行相应处理。编写代码处理某个方法可能出现的异常,可遵循如下三个原则:
(1)在当前方法声明中使用 try catch 语句捕获异常。
(2)一个方法被覆盖时,覆盖它的方法必须拋出相同的异常或异常的子类。
(3)如果父类抛出多个异常,则覆盖方法必须拋出那些异常的一个子集,而不能拋出新异常。
二、异常分类及常见异常
一、异常分类
1.Throwable 类是所有异常和错误的超类,下面有 Error 和 Exception 两个子类分别表示错误和异常。
Exception 类用于用户程序可能出现的异常情况,它也是用来创建自定义异常类型类的类。
常见exception
Error 定义了在通常环境下不希望被程序捕获的异常。Error 类型的异常用于 Java 运行时由系统显示与运行时系统本身有关的错误。堆栈溢出是这种错误的一例。Error 类型的异常通常是灾难性的致命错误,不是程序可以控制的。
常见error
2. 异常类 Exception 又分为运行时异常(不检查异常)和非运行时异常(检查异常)。
运行时异常都是RuntimeException 类及其子类异常,如 NullPointerException、IndexOutOfBoundsException 等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般由程序逻辑错误引起,程序应该从逻辑角度尽可能避免这类异常的发生。
非运行时异常是指 RuntimeException 以外的异常,类型上都属于 Exception 类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如 IOException、ClassNotFoundException 等以及用户自定义的 Exception 异常,一般情况下不自定义检查异常。表 1 列出了一些常见的异常类型及它们的作用。
二、异常分类图以及常见异常
1. RuntimeException子类:
2.IOException
3. 其他