1、异常概念
异常:指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。
在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。java处理异常的方式是中断处理。
异常指的并不是语法错误,语法错了,编译不通过,不会产生字节码文件,根本不能运行。
2、异常体系
3、异常分类
java.lang.Throwable:类是java语言中所有错误或异常的超类
Exception:编译器异常,进行编译(写代码)java程序运行过程中出现的问题
RuntimeException:运行期异常,java程序运行过程中出现的问题
异常就相当于得了一个小毛病(感冒,发烧),把异常处理掉,程序可以继续执行(吃点药,继续革命工作)
Error:错误
错误就相当于程序得了一个无法治愈的毛病,必须修改源代码,程序才能继续执行。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo01Exception {
public static void main(String[] args) {
//Exception:编译器异常,进行编译Java程序出现问题
//格式化日期
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// Date date = null;
// try {
// date = sdf.parse("1999-0909");
// } catch (ParseException e) {
// e.printStackTrace();
// }
// System.out.println(date);
// int[] arr = {1, 2, 4, 6};
// try {
// //可能出现异常的代码
// System.out.println(arr[4]);
// }catch (Exception e) {
// //异常处理逻辑
// System.out.println(e); //java.lang.ArrayIndexOutOfBoundsException: 4
//
// }
//System.out.println(arr[4]); //ArrayIndexOutOfBoundsException
//Error 错误
//OutOfMemoryError内存溢出错误,创建的数组太大了,超出了给JVM分配的内存
// int[] arr = new int[1024 * 1024 * 1024];
//必须修改代码,创建的数组小一点
int[] arr = new int[1024 * 1024];
System.out.println("后续代码");
}
}
4、抛出异常throw
java异常处理的五个关键字:try,catch,finally, throw,throws、
/*
throw关键字
作用:
可以使用throw关键字在指定的方法中抛出指定的异常
使用格式:
throw new xxxException("异常产生的原因");
注意:
1、throw关键字必须写在方法的内部
2、throw关键字后边new的对象必须是Exception或者Exception的子类对象
3、throw关键字抛出指定的异常对象,我们就必须处理这个异常对象
throw关键字后边创建的是RuntimeException的子类对象,我们可以不处理
默认交给JVM处理(打印异常,中断程序)
throw关键字后边创建的是编译异常,我们就必须处理这个异常,要么throw,要么try...catch
*/
public class Demo03Throw {
pub