java异常处理框架_深入探索 高效的Java异常处理框架(1)
摘要:本文从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)相关推荐
- java arraylist排序_一文读懂Java集合框架
欢迎关注微信公众号:深入浅出Java源码 概念 Java集合框架为程序员提供了预先包装的数据结构和算法来操纵他们.集合框架被设计成要满足以下几个目标. 该框架必须是高性能的.基本集合(动态数组,链表, ...
- java xml最火的的工具_几种高效的Java工具类推荐
本文将介绍了十二种常用的.高效的Java工具类 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类. 在开发中,使用这些工具类,不仅可以提高编码效率,还 ...
- java 数据校验框架_自己写的基于java Annotation(注解)的数据校验框架
JavaEE6中提供了基于java Annotation(注解)的Bean校验框架,Hibernate也有类似的基于Annotation的数据校验功能,我在工作中,产品也经常需要使 用数据校验,为了方 ...
- java 解决故意弄得错误,高效的Java错误处理
高效的Java异常处理 Java开发人员可以做出的最重要的架构性决策之一就是如何使用Java异常模型.Java异常一直以来就是社群中许多争议的靶子.有人争论到,在 Java语言中的异常检查已是一场失败 ...
- 大华java面试经验_大华面试(Java 基础)
7-17 大华一面(java 基础) 1. 讲一下 java 和其他语言的区别,说下 java 的平台无关性,如何做到一次编译,到处运行 关于java 的特性,可以从 java 的优点来说. java ...
- spring框架_一篇文章带你理解Spring框架
虽然现在流行用SpringBoot了,很多配置已经简化和封装了,但是对于Spring的一些基础我们了解一些是对我们自己的架构思想很有帮助的!接下来和笔者一起来探讨一下Spring框架吧! 1.什么是S ...
- java 面试 概率论_编程培训-115个Java面试题和答案B.pdf
编程培训-115个Java面试题和答案B.pdf "玩转"Java系列 1 题目115个Java面试题和答案终极(下) 第一篇讨论了面向对象编程和它的特点,关于Java和它的功能的 ...
- java coin介绍_代码示例中的Java 7:Project Coin
java coin介绍 该博客通过代码示例介绍了一些新的Java 7功能,这些项目在Project Coin一词下进行了概述. Project Coin的目标是向JDK 7添加一组小的语言更改.这些更 ...
- java铝轮_为速度而生 JAVA Fuoco铝合金气动公路
人类在追求速度的历史上一直在不断创新,从两个轮子的自行车,到四个轮字的汽车,再到螺旋桨的飞机,追求速度是人类与生俱来的天性.就如同公路车的用途非常多,综合型公路车.耐力型公路车.爬坡型公路车,但唯独气 ...
最新文章
- 32位处理器的寄存器介绍
- Python 面向对象 —— super 的使用(Python 2.x vs Python 3.x)
- 最初步软件需求说法的简单调查报告
- map和list遍历基础
- vue 兄弟组件之间的传值
- 快捷配置Hibernate实现对数据库的配置(构建通道)
- poj 1068 Parencodings
- 图论 BZOJ 3669 [Noi2014]魔法森林
- oracle全局高速缓存,Oracle技术之设置系统全局区SGA命令
- 网站开发之HTML基础表格Table和表单Form(三)
- 新手学c还是java_80x86汇编小站,新手学c还是java
- 用java做出长方体的表面积_计算长方体、四棱锥的表面积和体积(Java)acm.sdut...
- 数26个大写字母里带圈的字母个数
- python虚拟环境是什么意思_python的虚拟环境详解
- 学习andriod开发之 异步加载图片(二)--- 使用其他进度条
- 开源项目——小Q聊天机器人V1.1
- 移动物联网怎么激活?开户流程是怎么样的
- ArcGIS Engine环境下VS窗体与Unity虚拟现实地理空间的嵌套和交互
- 大早起的起来就上网瞎逛,发现了就记录下来,也算心理安慰
- 网络工程师常用的命令整理-windows版,还不快收藏起来
热门文章
- SAP Spartacus logout的拦截
- SAP Fiori Elements - Account F4 help - how value help dialog is populated
- How org unit id and type is determined in Genil
- CL_CRM_PRODIL_EXTENSION
- S/4HANA生产订单的标准状态和透明工厂原型状态的映射
- 步骤3 - Orchestra将请求转发给微服务提供者
- 蒙牛 customer Project Support - 同时更新两个database table
- SAP ABAP Netweaver Note download debug
- when is One Order gt_plan_exets filled
- 如何使用SAP CRM增强工具AET创建Table表格类型的增强