异常的理解:在我们生活中,本来计划好的事情发生意料之外的事情,叫意外;在java中就是出错(bug),也称为出现异常。
- 经常遇到各类的异常
(转载)http://www.importnew.com/16725.html【想了解可以看一下】
- 异常的分类:(举个实例)
Class ArrayIndexOutOfBoundsException
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
java.lang.IndexOutOfBoundsException
java.lang.ArrayIndexOutOfBoundsException
从上面可以看出,出现的异常就是java中一些类(也是一个线程)
(注:此图转载至其他地方)
- 异常的处理方式:
-
- 自己处理
- 不处理直接抛出
- 自己处理异常
- 自己处理[捕获异常]
-
a、 try-catch的语法结构及链式结构多异常处理方式
- 语法:
try{
//可能产生异常的代码
}catch(捕获的异常类型 e){//e是形式参数
//该异常捕获之后要做的操作
}catch(捕获的异常类型 e){//e是形式参数
//该异常捕获之后要做的操作
}finally{
//异常发生之后一定会执行到的语句块:
//①流资源关闭②释放锁
}
b、语句块执行顺序:
- 顺序执行:进入异常捕获语句块
- 如果产生异常,执行catch捕获,捕获到对应异常,并且对应catch后面的代码块
- finally语句块一定会执行到:前提前面语句没有执行System.exit(0)退出虚拟机
- 异常信息处理方式二抛出异常
- 语法结构:方法后面使用throws 需要抛出的异常类型
示例:
void eat() throws ArithmeticException, CloneNotSupportedException{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月");
//sdf.parse("fsdfsd");
}
- 抛出异常的注意事项:
①方法抛出运行时异常,在方法头可以不用抛出异常
②方法抛出编译时异常:方法必须处理异常,或者抛出同类异常,或者抛出异常该异常的父类类型异常
- 捕获方式:
-
- 主动抛出异常
-
方法内部主动创建异常抛出:throw new SelfException("账户已经存在,请重新输入");
也可以抛出已知的异常类:如ArithmeticException等等
class SelfException extends Exception{
//自定义异常类
SelfException (String msg){
Super(msg);
}
}
- throws 与 throw 的区别
- throws 处理异常
在方法头抛出异常
- throw 开发代码存在以外的情况,自己主动抛出异常[产生异常]
如:在方法内部 throw new NullPointException();
异常到这,就不做解释了,因为各种各类的异常在java中很多,只有多看文档api,才能理解