一 异常
1 什么是异常?
异常就是程序出现了不正常的情况
2 编译时异常和运行时异常的区别(记忆)
2.1 编译时异常 --> 都是Exception类及其子类
必须显示处理 否则程序就会发送错误 无法通过编译
2.2 运行时异常
都是RuntimeException类及其子类
无需显示处理,也可以和编译时异常一样处理
3JVM 默认处理异常的方式
如果程序出现了问题 我们没有做任何处理 最终JVM会做默认的处理
处理方式有如下步骤:
把异常的名称,错误原因及异常出现的位置等信息输出在了控制台
程序停止执行
4 throws方式处理异常
代码示例:
public class ExceptionDemo{
public static void main(String[] args)throws ParseException{
System.out.println("开始")
method2();
System.out.println("结束");
}
//编译时异常
public static void method2() throws PaseException{
String s= "2048-08-09";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date d = sdf.parse(s);
System.out.println(d);
}
// 运行时异常
public static void method() throws ArrayIndexOUTofBoundException{
int[] arr ={1,2,3};
System.out.println(arr[3]);
}
}
注意事项:
这个throws 格式是跟在方法的括号后面的
编译时异常必须要进行处理 两种处理方案: try ... catch...或者 throws,
如果采用 throws这种方案 在方法上进行显示声明 将来谁调用这个方法谁处理
5 throw 抛出异常
throw new 异常();
这个格式是在方法内的,表示当前代码手动抛出一个异常,下面的代码不用再执行了
throws 和 throw 的区别
throws 用在方法声明后面 跟的是异常类名
表示声明异常 调用方法有可能会出现这样的异常
throw 用在方法体内 跟的是异常对象名
表示手动抛出异常对象由方法体内的语句处理
public class ExceptionDemo{
public static void main(String[] args){
int [] arr =null;
printArr(arr);
}
private static void printArr(int[] arr){
if(arr==null){
throw new NULLPointerException();
}else{
for(int i=0;i<arr.length;i++){
System.out.println(arr[i])
}
}
}
}
6 try-catch 方式处理异常
定义格式
try{
可能出现异常的代码
}catch(){
异常的处理代码
}
执行流程
-
程序从 try 里面的代码开始执行
-
出现异常,就会跳转到对应的 catch 里面去执行
-
执行完毕之后,程序还可以继续往下执行