JAVA 异常
2016-07-22 22:52
281 查看
捕捉异常
try{ //可能产生异常的代码 }catch(Type1 id1){ //处理Type1异常的代码 }catch(Type2 id2){ //处理Type2异常的代码 }catch(Type3 id3){ //处理Type3异常的代码 }
异常一旦发生,程序不一定要终止
抛出的子类异常会被父类的catch捕捉到
注意:图中所处二字指的是抛出异常所在的最近的大括号之间的区域。
捉到了做什么?
拿到异常对象之后,比如拿到了ArrayIndexOutOfBoundsException e那么可以有:
System.out.println(e.getMessage());//e.getMessage()得到的是发生异常的时候放在e里的值 System.out.println(e);//打印出的是异常的名字和当时e里的值 e.printStackTrace();//打印出异常发生的位置和依照上图走的路线并且给出代码第几行
拿到异常对象之后
String getMessage();
String toString();
void printStackTrace();
但是肯定回不去了,而具体的处理逻辑则取决于你的业务逻辑需要
再度抛出
调用这个代码即可:throw e;可再次把这个异常抛出
其实在没有异常的时候也可以通过throw来抛出一个异常。
例如:
class OpenException extends Throwable{ }//代表目前可能会发生的异常 class CloseException extends Throwable{ }//代表现在不可能发生的异常,但是将来程序升级可能会抛出的异常 public static void readFile() throws OpenException, CloseException{//在这个位置把两个异常都写上 if(true) throw new OpenException();//可以仅抛出一个异常 } public static void main(String[] args){ try{ readFile(); }catch(OpenException e){//需要为现在的异常提供解决代码 }catch(CloseException e){//为了提前做好升级的准备 } }
什么能仍?
任何继承了Throwable类的对象Exception类继承了Throwable
throw new Exception(); //这个是Exception类的一个构造函数
throw new Exception(“HELP”); //这个是Exception类的另一个构造函数
//通常我们选择继承Exception类并且使用它的带参数的这个构造函数
万能的异常捕捉器
所有的系统运行异常都继承了Exception类,所以用catch(Exception e)即可捕捉到所有异常。异常遇到继承
异常声明:如果你调用一个声明会抛出异常的函数,那么你必须: A、把函数的调用放在try块中,并且设置catch来捕捉所有可能抛出的异常 或: B、声明自己会抛出无法处理的异常
异常声明遇到继承关系
当覆盖一个函数的时候,子类不能声明抛出比父类的版本更多的异常
在子类的构造函数中,必须声明父类可能抛出的全部异常
相关文章推荐
- Java判断字符串是否是整数或者浮点数
- 关于JavaWeb如何实现用户类似站内信功能
- java学习之路之基本语法-程序流程控制
- java-并发-高并发概述
- java学习之路之基本语法-运算符练习题
- JAVA图形用户界面
- java关键字this的使用
- springmvc在线教程
- springmvc在线教程
- SpringMVC集成rabbitMQ
- Java基础之(十)基本类型的类型转换
- JAVA 面向对象 隐藏和封装
- Java多线程——sychronized
- Java相关环境变量配置总结
- SpringMVC工作原理解读--DispatcherServlet类源码解读(初级)
- JAVA 中 Arrays.sort 中的排序的方法
- JAVA常用的类库
- java学习之路-基础语法-运算符
- Struts1知识点、注意事项总结
- 基数排序简单Java实现