JAVA异常处理机制分析(上)
过去曾有一段时间关于java的异常处理机制曾经让我吃尽苦头,异常机制看似简单,原理,用法也仅仅如此,但是,用起来或是在使用一些框架的时候总会因为使用不当,造成灾难性后果。
jdk异常处理机制
我们可以通过一张图来很直观的展现异常处理的结构关系:
图1 Java异常类层次结构图
Throwable 是异常处理的底层实现类,可以被抛出,当然也可以被抓取处理。所以的其它一些异常处理类都是它的子孙后代。Error 该类以及子类旨在说明发生的具有灾难性后果的事件,就比如说内存错误,是虚拟机发生的重大错误,虚拟机捕获后会终止程序运行。 Exception 程序执行时候发生的异常,是我们经常会打交道的异常处理类,开发者可以基于它做异常扩展也可以做异常转型等。
异常如何使用
对于某个具体步骤所产生的异常,我们一般有两种方式,抓取处理和抛出。所以如何使用要根据具体场景。我们可以推算下这个过程。当程序发生异常时候,正常情况会终止程序的执行,但是,为了可以备选方案,甚至备选方案只是仅仅想打印出异常原因和具体位置。这时候就出现一个问题,这个备选方案在那部分开始实施?而在程序设计上我们以方法作为一个执行的最早过程,所以程序需要考虑的是在这一连串的方法调用中具体在那个方法执行备选方案?这往往跟具体也许要关。异常的抛出就解决了这个问题,我们可以通过抛出异常将异常抛到我们需要可以选择备选方案的地方通过抓取后继续执行,使程序不被终止执行。而这个过程中我们可以通过抓取抛出对异常进行变形来使异常信息可以更加清晰可见,使开发者可以很快追踪到问题所在。
举个例子:
public class Test { public static void testException(){
try {
String name=null;
name.length();
} catch (NullPointerException e) {
throw new MyException("我自己写的异常~");
}finally {
System.out.println("请允许我处理下~");
} } public static void main(String[] args) { try {
testException();
}catch (Exception e){
e.printStackTrace();
} }
}
上面的例子main方法其实抓取的是testException方法抛出的异常,而空指针异常处理了,但是把异常经过变形后抛出了。
使用场景比如:
我有个文件要读取解析,但是做类型解析时候出现类型转换异常,那么上级方法只想捕获异常通过出去是文件内容格式不合法,但是,就可以做异常转型,而对于文件操作我们往往需要进行close所以就可以在finally中释放资源的连接。
JAVA异常处理机制分析(上)的更多相关文章
- java异常处理机制 (转载)
java异常处理机制 本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.net/csh624366188 异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C ...
- Java异常处理机制 —— 深入理解与开发应用
本文为原创博文,严禁转载,侵权必究! Java异常处理机制在日常开发中应用频繁,其最主要的不外乎几个关键字:try.catch.finally.throw.throws,以及各种各样的Exceptio ...
- 如何正确使用Java异常处理机制
文章来源:leaforbook - 如何正确使用Java异常处理机制作者:士别三日 第一节 异常处理概述 第二节 Java异常处理类 2.1 Throwable 2.1.1 Throwable有五种构 ...
- java异常处理机制详解
java异常处理机制详解 程序很难做到完美,不免有各种各样的异常.比如程序本身有bug,比如程序打印时打印机没有纸了,比如内存不足.为了解决这些异常,我们需要知道异常发生的原因.对于一些常见的异常,我 ...
- JAVA 异常处理机制
主要讲述几点: 一.异常的简介 二.异常处理流程 三.运行时异常和非运行时异常 四.throws和throw关键字 一.异常简介 异常处理是在程序运行之中出现的情况,例如除数为零.异常类(Except ...
- 【转】深入理解java异常处理机制
深入理解java异常处理机制 ; int c; for (int i = 2; i >= -2; i--) { c = b / i; System.out.println("i=&qu ...
- Java异常处理机制的秘密
一.结论 这些结论你可能从未听说过,但其正确性是毋庸置疑的,不妨先看看: 1.catch中throw不一定能抛回到上一层,因为finally中的return会抑制这个throw 2.finally中t ...
- Java异常处理机制及两种异常的区别
java异常处理机制主要依赖于try,catch,finally,throw,throws五个关键字. try 关键字后紧跟一个花括号括起来的代码块,简称try块.同理:下面的也被称为相应的块. ...
- Java 异常处理机制和集合框架
一.实验目的 掌握面向对象程序设计技术 二.实验环境 1.微型计算机一台 2.WINDOWS操作系统,Java SDK,Eclipse开发环境 三.实验内容 1.Java异常处理机制涉及5个关键字:t ...
随机推荐
- jconsole远程连接超时问题解决方法
根据oracle网站上的文档,本地使用jconsole没有问题.但当我从windows连接到linux时(centos5.4)时,老是连接不上). 原因是Linux上JVM给jconsole的RMI配 ...
- 【node】---multer模块实现图片上传---【巷子】
1.安装muterl第三方模块 cnpm install multer --save 2.使用 multer在解析完成后,会向request对象中添加一个body对象和一个file或者files对象( ...
- DetaSet更新数据
用到的控件:DataGridView(展示数据), Button控件,更名[更新] using System; using System.Collections. ...
- .net配置404错误页面
如果你的网站出现一堆让人看不懂的报错,那么你就不是一个合格的程序员,也不是一个合格的站长. 下面的方面可以帮助你的网站远离让人头大的页面. 第一步:配置web.config 打开web.config, ...
- JAVAWEB Filter使用
Filter学习 1Filter是什么:是过滤器简称 2Filter有什么作用:在filter中可以得到代表用户请求和响应的request.response对象,因此在编程中可以使用Decorator ...
- 无线路由器wan口和lan口ip同网段导致无法上网解决办法
环境 本地网段为192.168.0.0/24 路由器默认网段也是192.168.0.0/24 设置好路由器wan口DHCP自动获取ip以后无法上网 解决办法 把路由器是lan口地址设置为192.168 ...
- pta 习题集 5-2 找出不是两个数组共有的元素 (5分)
给定两个整型数组,本题要求找出不是两者共有的元素. 输入格式: 输入分别在两行中给出两个整型数组,每行先给出正整数NN(≤20≤20),随后是NN个整数,其间以空格分隔. 输出格式: 在一行中按照数字 ...
- 使用or展开进行sql优化(即sql语法union all代替or可以提高效率)
问题: 这样一条sql应该怎么优化? select * from sys_user where user_code = 'zhangyong' or user_code in (select grp_ ...
- 转!!java 堆栈内存 对象实例等查看
https://blog.csdn.net/fenglibing/article/details/6411999
- 什么是虚拟DOM?
(摘抄自一篇文章,觉得这里写得非常不错,所以单独放出来,希望能对大家有帮助.)React为啥这么大?因为它实现了一个虚拟DOM(Virtual DOM).虚拟DOM是干什么的?这就要从浏览器本身讲起 ...