标签:ima 方法 java public 要求 传递 reac row ati
异常就是JAVA代码在运行时期发生的问题,在JAVA中,把异常信息封装成一个类,当出现了问题时,就会创建异常对象 并抛出相关信息(如异常出现的位置、原因等)
一、异常的继承体系
在JAVA中使用Exception类来描述异常
public class Exception extends Throwable
Exception 类是及其子类是Throwable的一种形式,它指出了合理的应用程序想要捕获的条件。
查看API中的Exception的描述,Exception类及其子类是Throwable的一种形式,它用来表示JAVA程序可能产生的异常,并要求对产生的异常进行合理的处理。Exception有继承关系,它的父类是Throwable ,Throwable是JAVA中所有错误和异常的超类。
Throwable有两个已知子类:
lang.Error 错误类,错误在编辑时期是不会出现的,一般在运行时期出现,
lang.Exception 异常类 -->Exception下还有个子类叫RuntimeException 运行时异常
public static void main(String[] args){
int[] array = {1,2,10};
System.out.println(getArray(array));
}
public static int getArray(int[] arr){
int i = arr[3];
return i++;
}
异常是如何抛出的
当JVM检测到有异常出现时,
1. 创建了异常对象 new ArrayIndexOutOfBroundsException(3),在构造器中输入异常的索引
2. JVM在方法中找处理异常的方法,找不到时则将异常的对象进行抛出,抛给方法的调用者(谁调用,抛给谁)main方法
注意:一旦异常抛出了,后面所有代码都不再执行
3. main方法接收到这个异常后,main也没有对这个异常的处理方法,所以main也将这个异常抛给调用main方法的调用者:jvm虚拟机。
注意:当main抛出异常后,后面所有的代码都不再执行
4. JVM收到异常后,将信息输出到控制台,将程序结束运行
二、抛出异常throw,方法中声明异常:throw new Exception(String 异常信息), 在方法()和{}之间,用throws Exception抛给调用者
在编写程序时,我们必须要考虑程序出现问题的情况,比如在定义方法时,方法需要接收参数,那么,当调用方法使用接收到的参数时,首先需要对参数数据进行合法的判断,数据若不合法,就应该告诉调用者,传递合法的数据进来。这时需要使出抛出异常来告诉调用者。
在JAVA中,提供了一个throw关键字,它用来抛出一个指定的异常对象,抛出异常是如何操作的呢?
1. 创建一个异常对象,封装一些提示信息。
2. 将这个异常对象抛给调用者,将结束当前方法的执行。
格式:throw new 异常类名称(参数);
public static void main(String[] args) {
int[] arr = null;
getArray(arr);
}
//将数组最后一个索引*2返回
public static int getArray(int[] array){
int i = array[array.length-1];
return i*2;
}
如上例,将一个空的数组作为参数传入,则会出现空指针异常,所以需要在方法内部对传入的数据进行合法性的判断
public static int getArray(int[] array){
//如果传入数组为int arr = null 时
if(array==null){
//抛出异常,throw,throw必须写在方法的内部,用于抛出异常对象,throw后面的内容必须要写new出来的异常的对象(Exception或其子类)
throw new Exception("传递的数组不存在");
}
//如果传入数组int[] arr = {}长度为0时
if(array.length<1){
throw new Exception("数组长度为0");
}
int i = array[array.length-1];
return i*2;
}
注意:方法中声明的异常,如上例throw new Exception(),表明此方法可能出现异常,还应用throws关键字抛给调用者
public static int getArray(int[] array)throws Exception{}
这样就把异常抛给了main方法
如果main处理不了,再在main方法把这个异常抛给jvm
public static voie main(String[] args)throws Exception{}
当调出了一个带有抛出异常的方法时,调用者必须要处理可能出现的异常,当然抛给JVM也是一种处理。
三、异常的处理方式
try...catch...finally...
try{
\\被检测的代码,可能出现异常的代码
}catch(异常类名 变量名){
\\异常的处理方式
}finally{
\\必须要执行的代码
}
四、多catch的注意事项
多catch捕获异常,异常类之间是有先后顺序的。
1. 平级之间,没有继承关系的,谁先谁后都没关系
2. 如果出现上下级关系的异常,越是父类的异常越是写到最后,级别越低的写前面。
catch(NullPointerException ex){}
catch(Exception ex){}
顺序错误会报错:unreachable 有永远执行不到的代码
五、finally代码块
1. finally内的代码,无论是否有异常,都必须执行
2. 只有一种情况不执行:在catch中,关闭了虚拟机System.exit(0);
3. finally的作用,用于释放资源,如读写IO流时,无论读写是否成功,都应该释放资源
标签:ima 方法 java public 要求 传递 reac row ati
原文地址:https://www.cnblogs.com/java-demo/p/9216705.html