概念
异常:指程序执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止
在java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象,java处理异常的方式是中断处理
异常并不是语法错误,语法错误编译过不了,不会产生可运行的字节码文件
异常体系:
类Throwable是所有异常和错误的超类
Exception:编译期异常,进行编译(写代码)java程序出现的问题
RuntimeException:运行期异常,java程序运行过程中出现的问题
异常处理掉,程序就可以继续执行
演示:
public static void main(String[] args) /*throws ParseException*/ {
SimpleDateFormat sdf=new SimpleDateFormat("yyy-MM-dd");
//第一种处理方法,抛出异常交给虚拟机处理
//缺点:一旦格式不一致,虚拟机就会中断程序将异常打印
try {
Date parse = sdf.parse("1999-0909");//这里故意没按格式写
//第二种处理方式:try catch
//try中是可能出现异常的代码,catch中是出现异常的处理方式
//好处:将异常处理后程序可以继续运行
} catch (ParseException e) {
System.out.println("出现了异常");
}
//错误Error演示
int[] arr=new int[1024*1024*1024];
//出现错误必须修改源代码
}
异常产生解析
public class Demo2 {
/*定义一个方法,获取数组指定索引处的元素
* 参数:
* int []arr
* int index
* */
public static void main(String[] args) {
int []arr={1,2,3};
int e=getElement(arr,3);
System.out.println(e);
}
public static int getElement(int []arr,int index){
int ele=arr[index];
return ele;
}
}
/*
jvm做了两件事:
1、jvm根据异常产生的原因创建了一个异常对象,这个异常对象包含了异常产生的(内容,原因,位置)
2、在getElement方法中,没有异常处理逻辑(try-catch),那么jvm就会把异常对象抛出给方法的调用者
main方法来处理这个异常
main方法收到这个异常对象,main方法也没有异常处理的逻辑,继续把对象抛出给main方法的调用者JVM处理
jvm收到这个异常对象,做了两件事
1、把异常对象(内容,原因,位置)红色字体打印在控制台
2、jvm会终止当前正在执行的java程序-->中断处理
*/