package com.itheima.demo01.Exception;
import com.sun.xml.internal.ws.util.xml.CDATA;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import static javax.print.attribute.Size2DSyntax.MM;
/*
java.lang.Throwable:类是Java语言中所有错误或者异常的超类。
Exception:编译器异常,进行编译时期(写代码)Java程序出现的问题
RuntimeExcetion:运行期异常,Java程序运行过程中出现的问题
异常就相当于程序得了一个小毛病,把异常处理掉,异常可以继续执行,比如吃点药或是打点点滴
Error:错
错误就相当于程序得了一个无法治疗的毛病(非典),必须修改源代码,程序才能继续执行
*/
public class Demo01Exception {
public static void main(String[] args) /*throws ParseException*/ {
//抛出异常,交给虚拟处理
//Exception:编译期异常,进行编译(写代码)Java程序出现的问;//SimpleDateFormat类(日期格式化类)创建一个SimpleFormat对象
/*SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
Date data = null;//把字符串格式的日期,解析为Date格式的日期,出现红色部分,
try {
data = sdf.parse("1999-09-09");
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(data);//虚拟机会把异常打印出来,中断处理程序
System.out.println("后续代码");
*/
/* int[] arr={1,2,3};;
try{
//可能会出现异常的代码
System.out.println(arr[3]);
}catch(Exception e){
//异常的处理逻辑
System.out.println(e);
}
System.out.println("后续戴代码");
*/
int[] arr=new int[1024*1024*1024];
//必须修改代码,创建的小一点
System.out.println("后续代码");
/*
Error:错误
OutOfMemooryError:java heap space
内存溢出的错误,创建的数组太大了,超出了给jvm分配的内存
*/
}
}
1.1异常的概念
异常,就是不正常的意思,在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响,在程序中的意思就是;
.异常:指的是程序在执行过程中,出现的非正常的情况,最终会导致jvm的非正常停止;
在Java等面向对象的编程语言中,异常本身就是一个类,产生异常就是创建异常对象并抛出了一个异常对象,Java处理异常的方式就是中断处理。//比如之前说的空指针第异常,如果程序在运行过程中出现空指针,就会创建一个空指针异常的对象,并且把异常对象交给虚拟机来处理,虚拟机就会中断程序,并在控制台打印出空指针异常等信息,这就一个异常的概念
异常指的并不是语法错误,语法错误,编译不通过,不会产生字节码文件,根本不能运行
1.2异常体系
异常机制其实就是 帮助我们找到程序中的问题,异常的根类是java.lang.Throwable(异常的最顶层的父类),其下有两个子类;java.lang.Error(错误,不能处理的问题)与Java.lang.Exception(异常,我们把异常处理后程序可以继续执行)。平常所说的异常就是指java.lang.Exception
Throwable体系:(在java.lang包下面有个Throwable类,Throwable类是Java语言中所有的错误或是异常的超类,及父类)
Error:严重错误Error,无法通过处理的错误,只能事先避免,好比绝症;
Exception:表示异常,异常产生后程序员是可以通过代码的方式纠正,使程序继续运行,是必须要处理的,好比感冒,阑尾炎
Exception下有个子类,RuntimeException称之为运行期异常,也就是程序运过程中抛出的异常,这里重点研究Exception
Throwable中常用的方法:
public void printStackTrace():打印异常信息
包含了异常的类型,异常的原因,还包括异常出现的位置,在开发和调试阶段,都得使用printStackTrace