1.什么是异常?
- 概念:程序在运行过程中出现的不正常的现象。出现异常不处理将终止程序运行。
- 异常处理的必要性:任何程序都可能存在大量的未知的问题、错误;如果不对这些问题进行正确的处理,则可能导致程序的中断,造成不必要的损失。
- 异常处理:Java编程语言使用异常处理机制为程序提供了异常处理的能力。
2、异常处理的分类
Throwable:可抛出的,一切错误或异常的父类,位于java.lang包中。(分为错误Error和异常Exception)
- Error:JVM、硬件、执行逻辑错误,不能手动处理(StackOverflowError、OutOfMemoryError)
- Exception:程序在运行和配置中产生的问题,可处理。(RuntimeException:运行时异常,可处理,可不处理;CheckedException:检查时异常,必须处理)【重点】
运行时异常:RuntimeException以及其子类
检查时异常:Exception以及子类,除了RuntimeException
3、常见运行时异常
NullPointerException:空指针异常
ArrayIndexOutOfBoundsException:数组越界异常
ClassCastException:类型转换异常
NumberFormatException:数字格式化异常
ArithmeticException:算数异常
//NullPointerException
String name=null;
System.out.println(name.equals("张三"));
//ArrayIndexOutOfBoundsException
int []arr= {10,32,343};
System.out.println(arr[3]);
//ClassCastException
Object str="hello";
Integer i=(Integer)str;
System.out.println(i);
//NumberFormatException
int n=Integer.parseInt("100a");
System.out.println(n);
//ArithmeticException
int n=10/0;
System.out.println(n);
4.异常处理
try:执行可能产生异常的代码
catch:捕获异常,并处理
finally:无论是否发生异常,代码总能执行
throw:手动抛出异常
throws:声明方法可能要抛出的各种异常
5.自定义异常
步骤1:新建一个异常类,让其继承异常类Exception或RuntimeException
步骤2:在你觉得有异常的地方抛出这个异常即可
6.带有异常声明的方法覆盖
子类中的方法:不能抛出比父类更多、更宽的异常。