一、异常的概念
1)Java异常是Java提供的用于处理程序中错误的一些机制。
2)所谓错误是指在程序运行过程中发生的一些异常事件(如:除0,
数组下标越界,所要读取的文件不存在)。
3)设计良好的程序应该在异常发生时提供处理这些错误的方法,使得程序不会因为异常的
发生而阻断或产生不可预见的结果。
4)Java程序的执行过程中如出现异常事件,则会生成一个异常类对象,该异常对象封装了异常事件的
信息并提交给Java运行时系统,这个过程称为抛出(throw)异常。
5)当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码,并把当前异常对象交给其处理,
这一过程称为捕获(catch)异常。
6)举例:
package com.hpe.exception;
public class TestEx {
public static void main(String[] args) {
try {
System.out.println(2/0);
} catch (ArithmeticException e) {
System.out.println("您好,除数不能为0");
}
try {
int[] arr = {1, 2, 3};
System.out.println(arr[5]);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("您好,数组下标越界了");
e.printStackTrace();
}
}
}运行结果:
您好,除数不能为0
您好,数组下标越界了
java.lang.ArrayIndexOutOfBoundsException: 5
at com.hpe.exception.TestEx.main(TestEx.java:13)总结:
1)try {}中写有可能会出现异常的语句,catch() {}中写的是当try语句中的代码发生异常后,要进行相应处理的代码。
2)如果不使用try-catch语句对可能发生异常的代码进行捕获,那么当发生异常时,程序就会终止,使用了try-catch语句
后,如果发生异常,只要在catch中不执行退出程序,程序依然可以继续运行。
3)异常对象通过调用printStackTrace方法,可以打印异常的详细信息。
4)
try {
someMethod(); //调用该方法时试图捕获异常
} catch (SomeException e) {
//异常处理代码
}5)方法可以抛出异常
/* 声明该方法可能抛出的异常 */
public void someMethod() throws SomeException {
if(someCondition()) {
throw new SomeExcetion("错误原因"); //构造并抛出异常对象
}
}
二、异常的分类
1、JDK中定义了很多异常类,这些类对应了各种各样可能出现的异常事件。
(可抛出的)
Throwable-----|
|--Error(错误,Java虚拟机的错误,无法处理)
|
|--Exception--|(异常,可以处理的)
|
|--RuntimeException(运行时异常,可以不处理)
|
|--如IOException等,这些是JDK中往外抛的异常(该类异常必须处理)1)Error:称为错误,由Java虚拟机生成并抛出,包括动态链接失败、虚拟机错误等,程序对其不做处理。
2)Exception:所有异常类的父类,其子类对应了各种各样可能出现的异常事件,一般需要
用户显式的声明或捕获。
3)RuntimeException:一类特殊的异常,如被0除、数组下标越界等,其产生比较频繁,
处理麻烦,如果显式的声明或捕获将会对程序可读性和运行效率产生很大影响。
因此由系统自动检测并将它们交给缺省的异常处理程序(用户可不处理)
Exception
ClassNotFoundException
IOException
InterruptedException
RuntimeException
ArithmeticException
IndexOutOfBoundsException
ArrayIndexOutOfBoundsException
StringIndexOutOfBoundsException
转载请注明原文地址: https://ju.6miu.com/read-36246.html