1、认识异常:异常是导致程序中断运行的一种指令流,如果不对异常进行正确处理,则可能导致程序的中断执行,造成不必要的损失。
int a=10;
int b=0;
int temp=a/b;
System.out.println(temp);
2、处理异常
格式:try{ 异常语句 }
Catch(Exception e) { }
Finally { 一定会执行的代码 }
3、常见异常:
(1)数组越界异常:ArrayIndexOutOfboundsException
(2)数字格式化异常:NumberFormatException
(3)算数异常:ArithmeticException
(4)空指针异常:NullPointerException
class Exc{
int a=10;
int b=10;
}
public static void main(String[] args) {
int temp =0;
Exc e=null;
e=new Exc();
try {
temp=e.a/e.b;
System.out.println(temp);
} catch (NullPointerException e2) {
System.out.println("空指针异常:"+e2);
}catch (ArithmeticException e2) {
System.out.println("算数异常:"+e2);
}finally{
System.out.println("程序退出。");
}
结果: 1
程序退出。
把第三行注释掉:结果:空指针异常:java.lang.NullPointerException
程序退出。
把b=10改为0,结果是:
算数异常:java.lang.ArithmeticException: / by zero
程序退出。
4、throws关键字:
在定义一个方法时,可以使用throws关键字声明,表示该方法不处理异常,抛给方法的调用者处理。
格式:public void tell () throws Exception {}
5、throw关键字:抛出一个异常,抛出的时候直接抛出异常类的实例化对象即可。
public static void main(String[] args) {
try {
throw new Exception("实例化异常对象");
} catch (Exception e) {
System.out.println(e);
结果:java.lang.Exception: 实例化异常对象
6、自定义异常:有些异常比较难找,这时自定义异常发挥作用。
直接继承Exception就可以完成自定义异常。
class MyException extends Exception{
public MyException(String msg) {
super(msg);
}
} public class ExceptionDemo02 {
public static void main(String[] args) {
try {
throw new MyException("自定义异常");
} catch (MyException e) {
System.out.println(e);
结果:com.jike.exc.MyException: 自定义异常