过去曾有一段时间关于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异常处理机制分析(上)的更多相关文章

  1. java异常处理机制 (转载)

    java异常处理机制 本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.net/csh624366188 异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C ...

  2. Java异常处理机制 —— 深入理解与开发应用

    本文为原创博文,严禁转载,侵权必究! Java异常处理机制在日常开发中应用频繁,其最主要的不外乎几个关键字:try.catch.finally.throw.throws,以及各种各样的Exceptio ...

  3. 如何正确使用Java异常处理机制

    文章来源:leaforbook - 如何正确使用Java异常处理机制作者:士别三日 第一节 异常处理概述 第二节 Java异常处理类 2.1 Throwable 2.1.1 Throwable有五种构 ...

  4. java异常处理机制详解

    java异常处理机制详解 程序很难做到完美,不免有各种各样的异常.比如程序本身有bug,比如程序打印时打印机没有纸了,比如内存不足.为了解决这些异常,我们需要知道异常发生的原因.对于一些常见的异常,我 ...

  5. JAVA 异常处理机制

    主要讲述几点: 一.异常的简介 二.异常处理流程 三.运行时异常和非运行时异常 四.throws和throw关键字 一.异常简介 异常处理是在程序运行之中出现的情况,例如除数为零.异常类(Except ...

  6. 【转】深入理解java异常处理机制

    深入理解java异常处理机制 ; int c; for (int i = 2; i >= -2; i--) { c = b / i; System.out.println("i=&qu ...

  7. Java异常处理机制的秘密

    一.结论 这些结论你可能从未听说过,但其正确性是毋庸置疑的,不妨先看看: 1.catch中throw不一定能抛回到上一层,因为finally中的return会抑制这个throw 2.finally中t ...

  8. Java异常处理机制及两种异常的区别

    java异常处理机制主要依赖于try,catch,finally,throw,throws五个关键字.   try 关键字后紧跟一个花括号括起来的代码块,简称try块.同理:下面的也被称为相应的块. ...

  9. Java 异常处理机制和集合框架

    一.实验目的 掌握面向对象程序设计技术 二.实验环境 1.微型计算机一台 2.WINDOWS操作系统,Java SDK,Eclipse开发环境 三.实验内容 1.Java异常处理机制涉及5个关键字:t ...

随机推荐

  1. PL/SQL Developer登入时候报ORA-12638

    在client安装目录,找到打开sqlnet.ora 在里面找到 SQLNET.AUTHENTICATION_SERVICES= (NTS)将其更改为: SQLNET.AUTHENTICATION_S ...

  2. kitkat-s5p4418drone 记录

      查看帮助: ./device/nexell/tools/build.sh  -h   编译u-boot: ./device/nexell/tools/build.sh -b drone2 -t u ...

  3. ubuntu video,gdm swith

    如果已经安装LightDM和GDM登录显示器.那么在Ubuntu下怎么在各种DM间任意切换呢? 以切换到GDM为例,打开终端,使用命令: sudo dpkg-reconfigure gdm 如果已经安 ...

  4. Python开发【模块】:Pygal 绘制直方图

    Pygal Pygal可用来生成可缩放的矢量图形文件,对于需要在尺寸不同的屏幕上显示的图表,这很有用,可以自动缩放,自适应观看者的屏幕 1.Pygal模块安装 ① Windows系统 # Pygal模 ...

  5. 005-java的Annotation

    一.概述 Annotation,JDK1.5开始提供 二.基本定义 public @interface HelloWorld { } 1.使用@Interface定义,名称大写 2.使用@Target ...

  6. 7.如何将python脚本打包为exe形式

    先安装pyinstaller,pip install pyinstaller 然后 pyinstaller -F combine.py打包即可

  7. 数据库知识,mysql索引原理

    1:innodb底层实现原理:https://blog.csdn.net/u012978884/article/details/52416997 2:MySQL索引背后的数据结构及算法原理    ht ...

  8. HDU1695:GCD(容斥原理+欧拉函数+质因数分解)好题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1695 题目解析: Given 5 integers: a, b, c, d, k, you're to ...

  9. jQuery实现节点克隆、替换和互换

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  10. .NET 海量数据处理,并处理事务问题

    1.下面是一个C#的控制台以代码来说明处理 using System.Data.SqlClient; class Program { static void Main() { string conne ...