JAVA异常知识总结

首先贴上JAVA常见的异常类之间的继承关系图

由图可以看出,基类为Throwable,Error和Exception类继承Throwable,Error下细分为AWTError(不太清楚),IOError(输入输出类),LinkageError(常见于JAR包冲突),ThreadDeath(线程类)。

Error由虚拟机生成并抛出,属于JVM系统内部错误或者资源耗尽等严重情况(程序无法处理的错误),属于JVM担负的责任,因而这类异常事件的发生后无法恢复或者无法对其进行捕获,error产生后最终将导致应用程序中断(JVM执行线程中断)。但是ERROR在某种场合下可以进行转译,即ERROR可以转译为Exception或者RuntimeException,从而挽回Error产生所带来的严重负面影响。

而Exception类下类别则非常多,首先分为两大类:RuntimeException以及非RuntimeException,(对应着Unchecked Exception以及Checked Exception)

RuntimeException类是Exception类的子类,它叫做运行时异常,Java中的所有运行时异常都会直接或者间接地继承自RuntimeException类。对于运行时异常(runtime exception)可以对其进行处理,也可以不处理。推荐不对运行时异常进行处理。

非RuntimeException:Java中凡是继承自Exception,而不继承自RuntimeException类的异常都是非运行时异常。一般来说,非RuntimeException一般都是外部错误,其必须给try{}catch...finally语句块捕获异常。也可以在可能发生该类型异常的方法写上throws 某一个Exception类型,如throws Exception,将异常抛出到外面一层去,可能最终由JVM进行处理。(如最常见的文件读写,数据库读写等操作)

时间: 2025-01-02 19:07:12

JAVA异常知识总结的相关文章

Java异常知识整理_处理异常时的性能开销

1.首先列两个从别的地方看到的说法: try-catch代码段会产生额外的性能开销,或者换个角度说,它往往会影响JVM对代码进行优化,所以建议仅捕获有必要的代码段,尽量不要一个大的try包住整段的代码:与此同时,利用异常控制代码流程,也不是一个好主意,远比我们通常意义上的条件语句(if/else.switch)要低效. Java每实例化一个Exception,都会对当时的栈进行快照,这是一个相对比较重的操作.如果发生的非常频繁,这个开销可就不能被忽略了. 2.关于这个结论的一些论证 原文地址:h

Java基础知识强化99:Java 常见异常及趣味解释

常见 Java 异常解释:(译者注:非技术角度分析.阅读有风险,理解需谨慎:) 1. java.langjava.lang软件包是java语言的核心部分,它提供了java中的基础类. java.lang.Object,这是java.lang的根类,也是所有java类的超类. java.lang ArithmeticException 出现异常的运算条件时,抛出此异常.例如,一个整数"除以零" 你正在试图使用电脑解决一个自己解决不了的数学问题,请重新阅读你的算术表达式并再次尝试. Arr

java基础知识(9)---异常

异 常: 异常:就是不正常.程序在运行时出现的不正常情况.其实就是程序中出现的问题.这个问题按照面向对象思想进行描述,并封装成了对象.因为问题的产生有产生的原因.有问题的名称.有问题的描述等多个属性信息存在.当出现多属性信息最方便的方式就是将这些信息进行封装.异常就是java按照面向对象的思想将问题进行对象封装.这样就方便于操作问题以及处理问题. 出现的问题有很多种,比如角标越界,空指针等都是.就对这些问题进行分类.而且这些问题都有共性内容比如:每一个问题都有名称,同时还有问题描述的信息,问题出

Java基础知识二次学习--第四章 异常

第四章 异常处理 时间:2017年4月26日11:16:39~2017年4月26日11:28:58 章节:04章_01节 04章_02节 视频长度:20:46+01:16 内容:异常的概念 心得: Java异常是JAVA提供的用于处理程序中错误的一种机制 实在运行的过程中发生的一些异常事件(比如除0溢出,数组越界,要读取的文件不存在) 设计良好的程序应该在异常发生时提供处理这些错误的方法,使得程序不会因为异常的发生而阻断或产生不可预见的结果 JAVA程序的执行过程中 如果出现异常事件,可以生成异

java异常面试常见题目

在Java核心知识的面试中,你总能碰到关于 处理Exception和Error的面试题.Exception处理是Java应用开发中一个非常重要的方面,也是编写强健而稳定的Java程序的关键,这自然使它成为面试题中的常客.关于Java中Error和Exception的面试题目多是关于Exception和Error的概念,如何处理Exception,以及 处理Exception时需要遵守的最佳实践等等.尽管关于多线程.垃圾回收.JVM概念和面向对象设计等方面的问题依然主宰着这类面试,你仍然需要为回答

java基础知识回顾之java Thread类学习(八)--java多线程通信等待唤醒机制经典应用(生产者消费者)

 *java多线程--等待唤醒机制:经典的体现"生产者和消费者模型 *对于此模型,应该明确以下几点: *1.生产者仅仅在仓库未满的时候生产,仓库满了则停止生产. *2.消费者仅仅在有产品的时候才能消费,仓空则等待. *3.当消费者发现仓储没有产品可消费的时候,会唤醒等待生产者生产. *4.生产者在生产出可以消费的产品的时候,应该通知等待的消费者去消费. 下面先介绍个简单的生产者消费者例子:本例只适用于两个线程,一个线程生产,一个线程负责消费. 生产一个资源,就得消费一个资源. 代码如下: pub

Java异常打印输出中常见方法的分析

Java异常是在Java应用中的警报器,在出现异常的情况下,可以帮助我们程序猿们快速定位问题的类型以及位置.但是一般在我们的项目中,由于经验阅历等多方面的原因,依然有若干的童鞋在代码中没有正确的使用异常打印方法,导致在项目的后台日志中,没有收到日志或者日志信息不完整等情况的发生,这些都给项目埋下了若干隐患.本文将深入分析在异常日志打印过程中的若干情况,并给出若干的使用建议. 1. Java异常Exception的结构分析 我们通常所说的Exception主要是继承于Throwable而来,可以参

java 异常机制

浅谈java异常机制 下班闲来无事,看看java基础知识,做一下总结 异常机制:是java提供的一个解决突发事件或者误操作的一种控制流程的一种解决方案 Throwable 所有错误或者异常的超类,包含两个子类Error和Exection 其中Error错误是程序无法处理的,如内存溢出.机器断电等 Exception异常包括运行时异常和编译时异常 运行时异常类均继承RuntimeException,常见的如NullPointerException,ArithmeticException,Index

浅谈java异常[Exception]

本文转自:focusJ 一. 异常的定义 在<java编程思想>中这样定义 异常:阻止当前方法或作用域继续执行的问题.虽然java中有异常处理机制,但是要明确一点,决不应该用"正常"的态度来看待异常.绝对一点说异常就是某种意义上的错误,就是问题,它可能会导致程序失败.之所以java要提出异常处理机制,就是要告诉开发人员,你的程序出现了不正常的情况,请注意. 记得当初学习java的时候,异常总是搞不太清楚,不知道这个异常是什么意思,为什么会有这个机制?但是随着知识的积累逐渐也