第十二章:通过异常来处理错误
来源:互联网 发布:酒水包装设计软件 编辑:程序博客网 时间:2024/05/18 01:53
Java的基本理念是“结构不佳的代码不能运行”(被检查的异常)
1.概念
早期语言常常具有多种错误处理模式,这些模式是通过在约定俗成的基础上。
在Java中,用强制规定的形式来消除错误处理过程中随心所欲的因素。(即为:我写的程序会报错,但是别人造成的。和我没关系)
2.基本异常
主要分类:运行时异常和编译时异常。如果能拆能在编译时处理掉,那就真的再好不过了
3.捕获时异常
理解监控区域(guarded region)的概念,它是一点可能产生异常的代码,并且后面跟着处理这些异常的代码。
try 快
捕获异常就想当于一个"事务",一旦抛出异常,事务回滚
4.创建自定义异常(继承Exception)
5.异常链
有时我们在处理异常的时又会抛出异常。此时要考虑用异常链(说白了就是组合。一个异常组合在另一个异常的构造方法中)
package com.myboy.exceptiondemo;class e1 extends Exception{}class e2 extends Exception{e2(Throwable cause){super(cause);}}class A{ public void f() throws e2{ try { g(); } catch (e1 e) { e.printStackTrace();//异常链 throw new e2(e);//组合 } } public void g() throws e1{ throw new e1(); }}public class Test1 {public static void main(String[] args) {A a=new A();try {a.f();} catch (e2 e) {e.printStackTrace();}}}
6.Java标准异常
Throwable这个Java类被用来表示任何可以作为异常被抛出的类(基类)
Error和Exception是Throwable的导出类,此处异常理解就可
7.使用finally进行清理
无论try块中异常是否抛出,它们都能得到执行。
在return 中使用finally:在return中,一定会先执行finally块中的代码
package com.myboy.exceptiondemo;class MuitpleReturns {public static String f(int i) {try { if(i==1) return null ;} finally { System.out.println("zhulu");}return "aa";}}public class Test2 {public static void main(String[] args) {for(int i=1;i<2;i++){MuitpleReturns.f(i);}}}//out zhulu
异常缺失:缺少最重要的异常,在特殊处理finally 里面,可能会直接忽略到某个异常
package com.myboy.exceptiondemo;class A extends Exception {@Overridepublic String toString() {return "A Level Exceptoin";}}class B extends Exception {@Overridepublic String toString() {return "B Level Exception";}}class Demo {public void demo1() throws A {throw new A();}public void demo2() throws B {throw new B();}}public class Test3 {public static void main(String[] args) {try {Demo demo = new Demo();try {demo.demo1();//} catch (A e) {//e.printStackTrace();//请问谁不会打印信息,那真是Low到爆了} finally {demo.demo2();}} catch (Exception e) {// e.printStackTrace();System.out.println(e.toString());}}}
6.异常匹配
抛出异常的时候,异常处理系统会按照代码的书写顺序找出"最近"的处理程序。找到匹配的处理程序后,它就认为异常的大盘了处理,就不再继续查找。
注:在多个catch 中,异常的基类大小一定要有顺序,不然虽然会抛出异常,但是不会抛出具体异常信息。
7.其他处理方式
所有尝试丢失掉异常信息的代码都是有问题的代码,要承认这不是设计问题,就是垃圾代码。
阅读全文
0 0
- 第十二章:通过异常来处理错误
- 第十二章 通过异常处理错误
- 第十二章 通过异常处理错误
- 第十二章 通过异常处理错误
- 《Java 编程思想》--第十二章:通过异常处理错误
- JAVA编程思想-第十二章 通过异常处理错误
- 第十二章——通过异常处理错误
- 第十二章 通过异常处理错误 基本使用
- java编程思想 第十二章 通过异常处理错误
- 【学习笔记】第十二章 通过异常处理错误
- java编程思想读书笔记----第十二章 通过异常处理错误
- think in java 第十二章 通过异常处理错误
- 第十二章 异常处理错误
- 第十二章 通过异常处理程序
- 第十二章:通过异常处理问题
- JAVA编程思想学习总结:第十二章通过异常处理错误
- Java编程思想第四版第十二章学习——通过异常处理错误(1)
- Java编程思想第四版读书笔记——第十二章 通过异常处理错误
- freemarker加载模板文件的
- python: 多属性排序
- HDOJ 1024 DP
- 按之字形顺序打印二叉树
- 三种编程命名规则(匈牙利法,小驼峰法,大驼峰法)
- 第十二章:通过异常来处理错误
- stl源码剖析一些记录
- 任务分发系统-Qcmd-http详解
- firewall-cmd防火墙
- 你是否了解新媒体,新媒体简介
- javascript简单的加减乘除运算
- java web session过期 跳转页面没有跳出frame的问题
- 51Nod 1133 不重叠的线段 贪心
- 联网请求获取json串