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 ...
随机推荐
- supervisor 配置篇
1,配置管理进程 进程管理配置参数,不建议全都写在supervisord.conf文件中,应该每个进程写一个配置文件放在include指定的目录下包含进supervisord.conf文件中. 1&g ...
- sort命令详解及Nginx统计运用
sort命令是帮我们依据不同的数据类型进行排序,其语法及常用参数格式: sort [-bcfMnrtk][源文件][-o 输出文件] 补充说明:sort可针对文本文件的内容,以行为单位来排序. 参 数 ...
- JQueryUI之Autocomplete
JQueryUI之Autocomplete JQuery UI 是以 JQuery 为基础的开源 JavaScript 网页用户界面代码库.包含底层用户交互.动画.特效和可更换主题的可视控件,这些控件 ...
- Windows使用filezilla搭建FTP服务器
参考:https://segmentfault.com/a/1190000009033181 下载软件https://filezilla-project.org/ 安装过程不详述,默认安装即可 启动软 ...
- gnome,xfce,unity,vncserver chinese,jvm locale language
__________________________ yum search vnc-server sudo yum install tigervnc-server vncserver -list ...
- scrapy爬虫系列之七--scrapy_redis的使用
功能点:如何发送携带cookie访问登录后的页面,如何发送post请求登录 简单介绍: 安装:pip3 install scrapy_redis 在scrapy的基础上实现了更多的功能:如reques ...
- Android中的Handler及它所引出的Looper、MessageQueue、Message
0.引入 0.1.线程间通信的目的 首先,线程间通信要交流些什么呢? 解答这个问题要从为什么要有多线程开始,需要多线程的原因大概有这些 最早也最基本:有的任务需要大量的时间,但其实并不占用计算资源,比 ...
- Windows版本搭建安装React Native环境配置
1 安装Chocolatey 打开cmd黑窗口 @powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((new-obje ...
- 三、Mosquitto Java 客户端实现
本文的实现是在 << 一.Mosquitto 介绍&安装>> << 二. Mosquitto 的使用说明 >> 两篇文章搭建好 Mosquitt ...
- (转)帮你深入理解OAuth2.0协议
1. 引言 如果你开车去酒店赴宴,你经常会苦于找不到停车位而耽误很多时间.是否有好办法可以避免这个问题呢?有的,听说有一些豪车的车主就不担心这个问题.豪车一般配备两种钥匙:主钥匙和泊车钥匙.当你到酒店 ...