摘要:本文从Java异常最基本的概念、语法开始讲述了Java异常处理的基本知识,分析了Java异常体系结构,对比Spring的异常处理框架,阐述了异常处理的基本原则。并且作者提出了自己处理一个大型应用系统异常的思想,并通过设计一个异常处理的框架来论述此思想。

一、 异常的概念和Java异常体系结构

异常是程序运行过程中出现的错误。本文主要讲授的是Java语言的异常处理。Java语言的异常处理框架,是Java语言健壮性的一个重要体现。

Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。在Java API中已经定义了许多异常类,这些异常类分为两大类,错误Error和异常Exception。Java异常体系结构呈树状,其层次结构图如图 1所示:

图 1Java异常体系结构

Thorwable类所有异常和错误的超类,有两个子类Error和Exception,分别表示错误和异常。其中异常类Exception又分为运行时 异常(RuntimeException)和非运行时异常,这两种异常有很大的区别,也称之为不检查异常(Unchecked Exception)和检查异常(Checked Exception)。下面将详细讲述这些异常之间的区别与联系:

1、Error与Exception

Error是程序无法处理的错误,比如OutOfMemoryError、ThreadDeath等。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。

Exception是程序本身可以处理的异常,这种异常分两大类运行时异常和非运行时异常。程序中应当尽可能去处理这些异常。

2、运行时异常和非运行时异常

运行时异常都是RuntimeException类及其子类异常,如NullPointerException、 IndexOutOfBoundsException等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引 起的,程序应该从逻辑角度尽可能避免这类异常的发生。     非运行时异常是RuntimeException以外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,如果不 处理,程序就不能编译通过。如IOException、SQLException等以及用户自定义的Exception异常,一般情况下不自定义检查异 常。

java异常处理框架_深入探索 高效的Java异常处理框架(1)相关推荐

  1. java arraylist排序_一文读懂Java集合框架

    欢迎关注微信公众号:深入浅出Java源码 概念 Java集合框架为程序员提供了预先包装的数据结构和算法来操纵他们.集合框架被设计成要满足以下几个目标. 该框架必须是高性能的.基本集合(动态数组,链表, ...

  2. java xml最火的的工具_几种高效的Java工具类推荐

    本文将介绍了十二种常用的.高效的Java工具类 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类. 在开发中,使用这些工具类,不仅可以提高编码效率,还 ...

  3. java 数据校验框架_自己写的基于java Annotation(注解)的数据校验框架

    JavaEE6中提供了基于java Annotation(注解)的Bean校验框架,Hibernate也有类似的基于Annotation的数据校验功能,我在工作中,产品也经常需要使 用数据校验,为了方 ...

  4. java 解决故意弄得错误,高效的Java错误处理

    高效的Java异常处理 Java开发人员可以做出的最重要的架构性决策之一就是如何使用Java异常模型.Java异常一直以来就是社群中许多争议的靶子.有人争论到,在 Java语言中的异常检查已是一场失败 ...

  5. 大华java面试经验_大华面试(Java 基础)

    7-17 大华一面(java 基础) 1. 讲一下 java 和其他语言的区别,说下 java 的平台无关性,如何做到一次编译,到处运行 关于java 的特性,可以从 java 的优点来说. java ...

  6. spring框架_一篇文章带你理解Spring框架

    虽然现在流行用SpringBoot了,很多配置已经简化和封装了,但是对于Spring的一些基础我们了解一些是对我们自己的架构思想很有帮助的!接下来和笔者一起来探讨一下Spring框架吧! 1.什么是S ...

  7. java 面试 概率论_编程培训-115个Java面试题和答案B.pdf

    编程培训-115个Java面试题和答案B.pdf "玩转"Java系列 1 题目115个Java面试题和答案终极(下) 第一篇讨论了面向对象编程和它的特点,关于Java和它的功能的 ...

  8. java coin介绍_代码示例中的Java 7:Project Coin

    java coin介绍 该博客通过代码示例介绍了一些新的Java 7功能,这些项目在Project Coin一词下进行了概述. Project Coin的目标是向JDK 7添加一组小的语言更改.这些更 ...

  9. java铝轮_为速度而生 JAVA Fuoco铝合金气动公路

    人类在追求速度的历史上一直在不断创新,从两个轮子的自行车,到四个轮字的汽车,再到螺旋桨的飞机,追求速度是人类与生俱来的天性.就如同公路车的用途非常多,综合型公路车.耐力型公路车.爬坡型公路车,但唯独气 ...

最新文章

  1. 32位处理器的寄存器介绍
  2. Python 面向对象 —— super 的使用(Python 2.x vs Python 3.x)
  3. 最初步软件需求说法的简单调查报告
  4. map和list遍历基础
  5. vue 兄弟组件之间的传值
  6. 快捷配置Hibernate实现对数据库的配置(构建通道)
  7. poj 1068 Parencodings
  8. 图论 BZOJ 3669 [Noi2014]魔法森林
  9. oracle全局高速缓存,Oracle技术之设置系统全局区SGA命令
  10. 网站开发之HTML基础表格Table和表单Form(三)
  11. 新手学c还是java_80x86汇编小站,新手学c还是java
  12. 用java做出长方体的表面积_计算长方体、四棱锥的表面积和体积(Java)acm.sdut...
  13. 数26个大写字母里带圈的字母个数
  14. python虚拟环境是什么意思_python的虚拟环境详解
  15. 学习andriod开发之 异步加载图片(二)--- 使用其他进度条
  16. 开源项目——小Q聊天机器人V1.1
  17. 移动物联网怎么激活?开户流程是怎么样的
  18. ArcGIS Engine环境下VS窗体与Unity虚拟现实地理空间的嵌套和交互
  19. 大早起的起来就上网瞎逛,发现了就记录下来,也算心理安慰
  20. 网络工程师常用的命令整理-windows版,还不快收藏起来

热门文章

  1. SAP Spartacus logout的拦截
  2. SAP Fiori Elements - Account F4 help - how value help dialog is populated
  3. How org unit id and type is determined in Genil
  4. CL_CRM_PRODIL_EXTENSION
  5. S/4HANA生产订单的标准状态和透明工厂原型状态的映射
  6. 步骤3 - Orchestra将请求转发给微服务提供者
  7. 蒙牛 customer Project Support - 同时更新两个database table
  8. SAP ABAP Netweaver Note download debug
  9. when is One Order gt_plan_exets filled
  10. 如何使用SAP CRM增强工具AET创建Table表格类型的增强