标签:
/* java 中的所有异常类都是继承自 Throwable类,就是说所有的异常类都是 Throwable类的子类. 所有的类都是 Object 类的子类,Throwable类有两个子类,Error类和Exception类, 主要关注的就是 Exception类, 其中 Exception 类包括 RuntimeException和其他异常类 */ public class Hi { public static void exception() { int i[] = {1,2,3}; System.out.println("i[3] = "+i[3]); } public static void main(String[] args) { exception(); // 数组越界异常,报错 } } // 常见的运行时异常类(RuntimeException) java.lang.ArithmeticException: 算术异常 java.lang.ArrayIndexOutOfBoundsException:数组越界异常 java.lang.ArrayStoreException:数组元素值类型与数组类型不符异常 java.lang.ClassCastException:对象转换异常 java.lang.IllegalArgumentException:调用方法时传入非法参数异常 java.lang.IllegalMonitorStateException:非法监控操作异常 java.lang.IllegalStateException:java环境或java应用程序状态异常 java.lang.IllegalThreadStateException:线程没有处于请求操作所要求状态异常 java.lang.IndexOutOfBoundsException:索引越界异常 java.lang.NegativeArraySizeException:数组长度为负值异常 java.lang.NullPointerException:空指向异常 java.lang.NumberFormatException:数字格式异常 java.lang.SecurityException:违反安全性异常 java.lang.StringIndexOutOfBoundsException:字符串索引越界异常 java.lang.UnsupportedOperationException:操作错误异常 检查异常 java.lang.Exception:处理异常的基本异常类 java.lang.ClassNotFoundException:找不到相关异常 java.lang.CloneNotSupportedException:使用继承自Object类的 clone()方法,但是该类没有实现 Cloneable 接口 java.lang.IllegalAccessException:访问类被拒绝异常(与权限有关) java.lang.InstantiationException:创建抽象类或接口对象实例异常 java.lang.InterruptedException:线程被另一个线程中断异常 java.lang.NosuchFieldException:在类中找不到此字段异常 java.lang.NosuchMethodException:在类中找不到此方法异常 /* 虽然系统提供了默认的异常处理程序,但是一般情况下,还是开发人员更希望的是自己处理异常: 两种处理异常处理方法: try ... catch ... finally ...//语句处理异常 throws 关键字将异常传递出来 */ try { // 可能抛出异常的语句 }catch(异常类型1 异常对象名1) { // 对该类型的异常进行处理的语句 }[catch(异常类型2 异常对象名2) {} ... ] [finally{ // 一定会运行的程序代码 }] // =========== public class Hi { public static void main(String[] args) { int i[] = {1,2,3}; try { System.out.println("i[0] = "+i[0]); System.out.println("i[3] = "+i[3]); // 数组越界异常 }catch(ArrayIndexOutOfBoundsException e) { System.out.println("异常信息:"+e); } System.out.println("i[1] = "+i[1]); // 正常执行 } } /* i[0] = 1 异常信息:java.lang.ArrayIndexOutOfBoundsException: 3 i[1] = 2 */ // ============= public class Hi { public static void main(String[] args) { int i[] = {1,2,3}; try { System.out.println("i[0] = "+i[0]); System.out.println("i[3] = "+i[3]); // 数组越界 }catch(ArrayIndexOutOfBoundsException e) { System.out.println("异常信息:"+e); }finally { System.out.println("无论如何都执行的语句"); } System.out.println("i[1] = "+i[1]); // 正常执行 } } /* i[0] = 1 异常信息:java.lang.ArrayIndexOutOfBoundsException: 3 无论如何都执行的语句 i[1] = 2 */ // ============= // 多个 catch语句块 import java.util.Scanner; import java.util.InputMismatchException; public class Hi { public static void main(String[] args) { Scanner read = new Scanner(System.in); int arr[] = new int[5]; try { System.out.println("请输入数组元素:"); for(int i=0; i<arr.length; i++) { arr[i] = read.nextInt(); } System.out.println("请输入数组元素索引:"); int n = read.nextInt(); System.out.println("arr["+n+"]="+arr[n]); int m = arr[3]/arr[0]; System.out.println("m = "+m); }catch(ArrayIndexOutOfBoundsException e) // 捕捉数组越界异常 { System.out.println("异常:"+e); }catch(ArithmeticException e) // 捕捉算术异常 { System.out.println("异常:"+e); }catch(InputMismatchException e) // 捕捉输入不匹配异常 { System.out.println("异常:"+e); } System.out.println("end ... "); } } // ============
标签:
原文地址:http://www.cnblogs.com/lin3615/p/4263781.html