一.什么是异常
程序在运行的时候,因非正常原因导致的当前命令终止了,所出现的情况称为异常。
java是面向对象的语言,所以对于这种情况也设计了一个对应的异常类对象(Throwable),对异常进行处理。
java将异常分为两大类:
1.Error:所发生的错误是无法通过程序代码解决的异常,错不在代码,大多数原因出在虚拟机JVM
2.Exception:可以通过程序代码对异常进行处理,是程序可以自行解决的异常。
对于我们开发来说更为关注的是我们能通过代码解决的异常(Exception)。
对于异常的处理方式我们分两大类:
1.非运行时异常(受查异常)。
2.运行时异常(非受查异常)。
二.常见异常
运行时异常(RuntimeException)
1 java.lang.ArrayIndexOutOfBoundsException 数组索引越界异常。当对数组的索引值为负数或大于等于数组大小时抛出。
2 java.lang.ArithmeticException 算术条件异常。譬如:整数除零等。
3 java.lang.SecurityException 安全性异常
4 java.lang.IllegalArgumentException 非法参数异常
5 java.lang.ArrayStoreException 数组中包含不兼容的值抛出的异常
6 java.lang.NegativeArraySizeException 数组长度为负异常
7 java.lang.ClassNotFoundException 找不到类异常。当应用试图根据字符串形式的类名构造类,而在遍历CLASSPAH之后找不到对应名称的class文件时,抛出该异常。
8 java.lang.NullPointerException 空指针异常。当应用试图在要求使用对象的地方使用了null时,抛出该异常。譬如:调用null对象的实例方法、访问null对象的属性、计算null对象的长度、使用throw语句抛出null等等。
非运行时异常
1 IOException 操作输入流和输出流时可能出现的异常
2 SQLException 操作数据库异常类
三.异常处理机制
对于错误、运行时异常、可查异常,Java技术所要求的异常处理方式有所不同。
1. 错误:对于方法运行中可能出现的Error,当运行方法不欲捕捉时,Java允许该方法不做任何抛出声明。因为,大多数Error异常属于永远不能被允许发生的状况,也属于合理的应用程序不该捕捉的异常。
2. 运行时异常:由于运行时异常的不可查性,为了更合理、更容易地实现应用程序,Java规定,运行时异常将由Java运行时系统自动抛出,允许应用程序忽略运行时异常。
3. 可查异常:对于所有的可查异常,Java规定:一个方法必须捕捉,或者声明抛出方法之外。也就是说,当一个方法选择不捕捉可查异常时,它必须声明将抛出异常。
所有异常处理机制分为两种:
1.抛出异常:通过Java的throw语句抛出异常。从方法中抛出的任何异常都必须使用throws子句。
2.捕获异常:捕捉异常通过try-catch语句或者try-catch-finally语句实现。
、