异常:
异常其实就是程序在编译和运行时期的一些不正常的异常。 Java的工程师们,把一些常见的问题都封装了异常类 ,在API中给你列举出来了。当我们使用Java语言写代码的时候,可能会出现这些问题,当出现这些问题的时候,就可以去API中找,哪里出现了问题。
异常类的继承体系
Throwable 是所有异常和错误的根类
Error: 错误,不能解决的问题。
Exception: 异常,可以解决的问题。
RuntimeException: 运行时异常,在运行时才出现问题
非RuntimeException:编译时异常,编译时有问题。
异常的处理
1.虚拟机自己处理:
直接停止程序运行,然后把异常信息打印在控制台
2.try...catch手动处理 :
try{ //检查代码中是否有异常
}catch(异常类 e){
//如果try中有异常,就会被catch捕获到
}
好处:处理之后的代码还可以继续执行
3.throws 声明异常
throws用在方法上,用来声明一个方法它可能会有异常
//如果一个方法后面有throws声明异常,那么调用方法的时候就需要处理异常。
public static void method(String str) throws ParseException {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(str);
System.out.println(date);
}
Throwable的方法
public String getMessage()
获取异常信息
public String toString()
返回异常类名+异常信息
public void printStackTrace()
打印详细的异常信息
throw 产生一个异常
如果你是写API的人,在写方法的时候,会考虑到方法的调用者传递非法的参数。你必须先对这些参数左一些合法性的校验,如果不通过,告诉调用者一个异常。
public static void main(String[] args) {
sale(7);
}
public static void sale(int money){
if(money==5||money==10){
System.out.println("钱是真的,可以正常买东西");
}else{
throw new RuntimeException("钱是假的,我报警了,等着!!!");
}
}
自定义异常
如果在写一个方法的时候,API中提供的异常类,还不足以说明程序的问题。你就可以自己定义一个异常类
自定义异常类的步骤:
1.写一个类继承Exception或者RuntimeException
2.自动生成两个构造方法
注意:自定义异常,名称一定要见名知意(最好是能够使用异常类的名称,来说明问题)