1.2继承关系:Object----Throwable---Exception---RuntimeException---接下来讲的都是运行时异常
1.3简单介绍错误error:java虚拟机内部错误导致,出现了程序员也无能为力,不可以在程序中捕获
1.4常见的六种异常:
一:java.lang.ArithmeticException算术异常
二:java.util.InputMismatchException输入不匹配异常
三:java.lang.ArrayIndexOutOfBoundsException数组下标越界异常
四:java.lang.NullPointerException空指针异常
五:java.lang.NumberFormatException数字格式化异常
六:ClassNotFound异常
1.5例子如下
package com.exception;
import java.util.Scanner;
public class Test {
public static void main(String[] args){
System.out.println("请输入被除数:");
Scanner in=new Scanner(System.in);
int num1=in.nextInt();
System.out.println("请输入除数:"); // 除数不为0
int num2=in.nextInt();
System.out.println("结果为"+num1/num2);
int[] a=new int[10];
a[10]=2; //数组下标越界
System.out.println(a[10]);
String w=null;
System.out.println(w.length());//空指针异常
String c="1";
String d="2";
Integer e=new Integer(c);//记住将字符串转化为数字的方法
Integer f=new Integer(d);
System.out.println(c+d);//输出结果为12 而不是3 计算器中输入栏输入的数字其实为字符串 要转化为数字
System.out.println(e+f);//输出结果为3 为正常的数字运算
}
}
一; 当输入除数为0时
Exception in thread "main" java.lang.ArithmeticException: / by zero
at com.exception.Test.main(Test.java:10)
二;当输入为非INT型则
Exception in thread "main" java.util.InputMismatchException
三:当数组下标越界时
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at com.exception.Test.main(Test.java:12) a[10]=2;
四;当空的对象调用它的属性或方法时
Exception in thread "main" java.lang.NullPointerException
at com.exception.Test.main(Test.java:17)
五;当把不是数字格式的字符串转化成数字时 如将上面改为 Sring c="1a";
Exception in thread "main" java.lang.NumberFormatException: For input string: "1a"
2.1 措施一:捕捉处理异常try{可能出现异常的语句}catch(捕捉到的异常类型 变量名){处理措施}catch(可能出现的另一种异常){}finally{一定要执行的语句} 当运行时没错误则不执行catch语句
2.2实例
try{//异常捕捉try-catch-finally
Scanner in=new Scanner(System.in);
System.out.println("请输入被除数:"); //当输入不是整形时出现输入不匹配异常
int num1=in.nextInt();
System.out.println("请输入除数:");//除数不能为0否则出现算术异常
int num2=in.nextInt();
System.out.println("结果为"+num1/num2);
}catch(ArithmeticException e){
System.out.println("除数不能输入为0");
e.printStackTrace();
}catch(InputMismatchException e){
System.out.println("请输入int型数字");
e.printStackTrace();
}finally{//不管有没有错都运行
System.out.println("退出程序");
}
2.3措施二:抛出异常不处理 (本方法中自己不处理 让调用者其他方法处理)
public static void main(String[] args) throws ArrayIndexOutOfBoundsException,NullPointerException{
int[] a=new int[10];
a[10]=2;//数组下标越界异常 只能是0-9
System.out.println(a[10]);
String w=null;
System.out.println(w.length());//空指针异常
}