1、Error异常和Exception异常都继承于throwable异常类。
2、throwable异常类下面分为两个子类:error异常(又名系统异常),和Exception异常(编码,环境,操作异常)
3、Error异常是系统异常(都是非检查异常),主要包括虚拟机错误(virtualmachineError)、线程死锁(threaddeth)。一旦出现Error异常就代表着程序崩溃了,可将其看作程序的终结者。
4.Exception异常包括两个大类:非检查异常(RuntimeException)和检查异常。
- RuntimeException异常主要包括四种异常:空指针异常,数组下标越界异常、类型转换异常、算术异常。由java虚拟机自动抛出和自动捕获。 - 检查异常:主要是一些文件异常,日志异常,sql异常,和一些需要我们人为干预的异常。检查异常,需要手动添加异常的捕获和处理。显式声明抛出
package bookcode.ex7.part7_5; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class ioEXception { public static void main(String[] args) throws IOException {//显式声明抛出 BufferedReader keyin = new BufferedReader(new InputStreamReader(System.in)); String c1; int i = 0; String[] e = new String[10]; while (i < 10) { c1 = keyin.readLine(); e[i] = c1; i++; } } } ```javascript 捕获处理 package bookcode.ex7.part7_5; public class ioEXception { public static void main(String args[]) { try { int a[] = new int[2]; System.out.println("Access element three :" + a[3]); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("Exception thrown :" + e); } System.out.println("Out of the block"); } }算数异常
package bookcode.ex7.partTest; public class arithmeticException { public static void main(String args[]){ int a, b, c; a = 9; b = 0; c = 8; System.out.println(a / b + c); } }空指针异常
package bookcode.ex7.partTest; public class nullException { private static int[] x; public static void main(String args[]){ System.out.println(x[0]); } }类转换异常
package bookcode.ex7.partTest; public class classCastException { static class One { public void foo() { System.out.println("One"); } } static class Two extends One { public void foo() { System.out.println("Two"); } public void dosth(){ System.out.println("Two again"); } } public static void main(String[] args) throws Exception{ One t = new Two(); //向上转型,即父类引用指向子类对象,此时子类对象的类型为父类的类型 t.foo(); t.dosth();//编译错误 t = (Two)t; t.dosth();//编译错误 ((Two) t).dosth();//编译成功 } }数组越界
package bookcode.ex7.partTest; public class listException { public static void main(String args[]){ String foo = args[1]; System.out.println("foo = " + foo); } }空栈异常
package bookcode.ex7.partTest; import java.util.Stack; public class stackException { public static void main(String args[]){ Stack stack = new Stack(); Object ob = stack.pop(); } }