Java重温之异常
概念:程序在运行过程中或者是编译时出现的不正常的现象。
异常的分类:
-
Throwable(异常的根类)
-
Error:程序不能处理的jvm级别的异常。
-
Exception:程序能够捕获或者处理的异常。
-
RuntimeException:运行时异常—》程序在运行过程中出现的异常,不是必须进行try catch的异常
-
CheckedException(编译时异常):出现在编译时的错误,必须进行处理的异常,要么try catch住,要么往外抛,谁调用,谁处理
-
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U7mAAmQS-1614527669989)(D:\4A\点击进入学习\Java\Java面向对象\image-20210228190003893.png)]
常见的运行时异常介绍:
异常类 含义 导致原因
ArithmeticException 算数异常 除数不能为0异常
InputMistmatchException 输入不匹配异常
NullPointException 空指针异常 一个引用类型的实例为null,调用方法. 如String str =null ; boolean isTrue = str.equals("")
ArrayOutOfBoundsException 数据下表越界异常 下标越界异常
NumberFormatException 数据格式化异常 将一个非数字的字符串转换为数据类型 如: new Integer(“abc”)
ClassCastException 强制类型转换异常 将一个父类的引用强制转换为没有继承关系的类型时 如:Pet pet = new PetDog(); PetCat cat = (PetCat) pet
异常的特点:
- 若某行代码在执行过程中抛出了异常,那么,后续的语句都不会执行
- 若异常已经被处理过,那么,后续的语句会继续执行
常见的非运行时异常(Checked异常,编译时异常)介绍:
异常类 含义 导致原因
ClassNotFoundException 找不到类的异常 通过Class.ForName(“类的全限定名对于的字符串”) 如:Class.forName(“a.b.c.Dog”)
ParseException 日期解析的异常 将一个与指定格式不匹配的日期字符串解析为Date类型对象时
如何对异常所属的类型进行赠别?
(运行时异常)RuntiemException类型异常:
①编译能通过。
②查看该异常类型的层次结构图(继承关系图),若该异常是直接或者间接继承RuntiemException
(编译时异常)checked异常:①若不处理,编译报错
②查看该异常类型的层次结构图(继承关系图),若该异常是直接或者间接继承RuntiemException
异常处理常见手段:try catch finally throws
public class test1 {
public static void main(String[] args) {
System.out.println(Method());
}
public static int Method()
{
try {
System.out.println("执行了try操作");
int a = 5/0;
return 1;
}
catch(Exception e)
{
e.printStackTrace();
return 2;
}
finally {
System.out.println("执行了finally");
return 3;
}
}
}
//顺序是如果没异常 try-->finally 但是都有return的情况下最终返回finally的返回值
//如果顺序是有异常的 catch-->finally
//最终打印是 执行了try操作,执行了finally操作,3