java的未检查异常有哪些_Java:检查异常与未检查异常

一、异常的介绍

Throwable 是 Java 中所有错误和异常的超类。Java 虚拟机仅抛出属于此类(或其子类之一)的实例对象,或者是 throw 语句也可以抛出该对象。同样,catch 子句中的参数类型也只能是此类(或其子类之一)。处于编译时检查异常为目的,Throwable 和其部分子类(除开 RuntimeException、Error 及它们其子类)都被视为检查的异常(checked exceptions),又称为运行时的异常,剩下的都是未检查的异常(unchecked exceptions)。

一个 throwable 包含它创建时线程执行堆栈的快照。它还可以包含一个消息字符串,该字符串提供有关该错误的更多信息。随着时间的流逝,一个throwable可以抑制其他 throwables 的传播。最后,throwable 还可以包含一个原因:另一个导致该 throwable 构造的 throwable。此因果信息的记录称为链接异常机制,因为原因本身可以具有原因,依此类推,导致异常的“链”,每个异常都是由另一个原因引起的。

二、Java异常结构层次图

6ec5abd958b2eff0440f94a90482402f.png

图中仅列出一些比较常见的异常,还有绝大部分没有展现出来,可见 Java异常家族之大。还有就是 Error 那一块的东西对于我来说几乎没有碰到过,表示运行应用程序中较严重问题,大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。例如,当 JVM 不再有继续执行操作所需的内存资源时,将出现 OutOfMemoryError。 Exception 是程序本身可以处理的异常。也就是你常见的空指针异常(NullPointerException),数组超出范围异常(IndexOutOfBoundsException)等等。

三、检查的异常和非检查的异常

Java的异常(包括Exception和Error)分为已检查的异常(checked exceptions)和非检查的异常(unchecked exceptions)。

① 检查的异常

编译器要求你必须处置的异常,代码还没运行,编译器就会检查你的代码,会不会出现异常,要求你对可能出现的异常必须做出相应的处理。

对检查异常(checked exception)的几种处理方式:

继续抛出,消极的方法,一直可以抛到java虚拟机来处理,就是通过throws exception抛出。

用try...catch捕获

注意,对于检查的异常必须处理,或者必须捕获或者必须抛出。除 RuntimeException 与其子类,以及 Error,其他的都是检查异常。

② 非检查的异常

编译器不要求强制处置的异常,不会在编译的时候检查,一一去检查会使得工作变得更加繁琐,只能在运行时才能检查出来,比如空指针异常等。

对未检查的异常(unchecked exception )的几种处理方式:

捕获

继续抛出

不处理

一般我们是不处理的,因为你很难判断会出什么问题,而且有些异常你也无法运行时处理,比如空指针,需要人手动的去查找。RuntimeException与其子类,以及错误(Error),都是属于这类异常。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/432986.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

warning:deprecated conversion from string constant to 'char *'解决方案

Linux 环境下当GCC版本比较高时,编译代码可能出现的问题 问题是这样产生的,先看这个函数原型: void someFunc(char *someStr); 再看这个函数调用: someFunc("Im a string!"); 把这两个东西组合起来,用最新的…

利用SVN工具下载OpenCore代码

OpenCore原来使用的是CVS管理代码的。从09年起,更换用SVN管理代码,大家可以用TortoiseSVN软件下载代码,网址是:http://tortoisesvn.net/,安装后tortoiseSVN会和window的资源管理器右键菜单紧密结合在一起,使…

java array_Java 数组

Java 数组数组对于每一门编辑应语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。Java语言中提供的数组是用来存储固定大小的同类型元素。你可以声明一个数组变量,如numbers[100]来代替直接声明100个独立变量number0&#xff…

idea 执行 java jar_idea打包java可执行jar包的实现步骤

1,在项目上鼠标右键 --> Open Module Settings2, Artifacts --> --> JAR --> From modules with dependencies...3, Main Class是你这个项目(脚本)的主方法,就是要运行的类,选一个4,如下图,设置 META-INF/MANIFEST.MF!!!!!切记,不能用默认的(起码我用默认的是不成…

约法三章

与自己约法三章如下: 1. 禁止发表悲观的言论,你是阳光的。哪怕翅羽沉重,依旧头颅高昂。 2. 专注,专注才能让你更有魅力。最近老不能集中注意力。 3. 做好自己。不管怎么样,你都有人在你背后关怀你支持着你&a…

raspberry pi 家族

项目 A型 B型 B型 2代B型 SoC(系统级芯片) Broadcom BCM2835(CPU,GPU DSP和SDRAM) Broadcom BCM2836 CPU ARM1176JZF-S核心(ARM11系列)700MHz 单核 ARM Cortex-A7 900MHz 4核 GPU(图形处理器) Broadcom VideoCore IV, OpenGL ES 2.0, 1080p 3…

js和jQuery 获取屏幕高度、宽度

js获取屏幕高度,宽带 网页可见区域宽:document.body.clientWidth网页可见区域高:document.body.clientHeight网页可见区域宽:document.body.offsetWidth (包括边线的宽)网页可见区域高:document.body.offsetHeight (包…

tomcat java php_为什么要用tomcat?

首先,tomcat是开源的,基于java语言开发的,部署web项目的容器。普通的html,浏览器可以直接搞定,可以不需要tomcat等部署,但是如servlet这些,浏览器没法直接将里面的内容解析出来吧。这些就需要一…

安装配置树莓派的最佳工具——NOOBS

本文由 极客范 - 开了光的喜羊羊 翻译自 Jason Fitzpatrick。欢迎加入极客翻译小组,同我们一道翻译与分享。转载请参见文章末尾处的要求。如果你想找一种最简单的方式启动你的树莓派,不用再左顾右盼啦!树莓派基金会开发的 New Out Of Box Sof…

Fiddler的钩子hook导致电脑无法连上网络

今天,电脑怎么都无法连上网络,重启了几次电脑也不行,网络环境是没有问题的,后来同事告诉我,Fiddler有一个BUG,就是Fiddler获取钩子之后没有释放掉,必须启动Fiddler,再关闭Fiddler&am…

java 方法参数绑定_java在注解中绑定方法参数的解决方案

我们有这样子的需求,需要记录用户操作某个方法的信息并记录到日志里面,例如,用户在保存和更新任务的时候,我们需要记录下用户的ip,具体是保存还是更新,调用的是哪个方法,保存和更新的任务名称以…

玩转树莓派Raspberry Pi 篇一:入门篇

前言:之前发了一篇树莓派刷OpenWrt系统的晒单,得到众多网友的关注,小编要希望分享更多DIY树莓派的经验。我玩树莓派都是比较简单的DIY,也积累了一点经验,在此分享给大家,算是抛砖引玉,希望看到大…

服务器三大类

SMP、NUMA、MPP体系结构介绍从系统架构来看,目前的商用服务器大体可以分为三类,即对称多处理器结构 (SMP : Symmetric Multi-Processor) ,非一致存储访问结构 (NUMA : Non-Uniform Memory Access) ,以及海量…

java listeners_Java ActionListeners

我将用Java开发一个游戏,它将拥有许多听众(动作,键,鼠标等).我的问题是实现监听器的最佳方式.方法1:this.addActionListener(new ActionListener() {// Overide methods go here});方法2:创建一个新类(或多个类),它将实现ActionListener并具有不同Game C…

WINCE6补丁安装

补丁安装 1. SP1 2. R2 3. R3 4. 最新一年的12月31月补丁 补丁下载地址 https://msdn.microsoft.com/en-us/windowsembedded/dn205267

codeforces B. The Fibonacci Segment 解题报告

题目链接:http://codeforces.com/problemset/problem/365/B 题目意思:简单来说,就是要找出最长的斐波纳契长度。 解决的方法不难,但是要注意更新左区间和右区间的值,而且需要把当前求出的斐波纳契长度和之前求出的斐…

mysql 导致iis 假死_php使用MySql函数导致Apache(iis)崩溃的问题解决方案

这个问题是在Windows下配置PHP环境时发生的。具体的表现是php运行正常,但是只要一调用MySql的相关函数,Apache就会崩溃掉。环境配置方式:php以模块的方式运行在Apache下。自定义php.ini路径phpinfo()显示mysql库加载成功崩溃后在Windows的错误…

回环设备(loop-back devices)

回环设备( loopback device)允许用户以一个普通磁盘文件虚拟一个块设备。设想一个磁盘设备,对它的所有读写操作都将被重定向到读写一个名为 disk-image 的普通文件而非操作实际磁盘或分区的轨道和扇区。(当然,disk-ima…

委托类型

委托时一种特殊的类型,它用来保存方法的地址,这样我们很方便的调用方法,像变量一样传递,回调。 C中的函数指针也是保存方法的地址,但是有一点不一样的是定义委托的时候就知道了它里面可以保存什么样的方法,…

python 管道 异步读取 select_python之异步select解析

一、I/O多路复用I/O的含义:在计算机领域常说的IO包括磁盘IO和网络IO,我们所说的IO复用主要是指网络IO;在Linux中一切皆文件,因此网络IO也经常用文件描述符FD来表示。复用的含义:在通信领域中为了充分利用网络连接的物理…