Java基础——运行时异常和非运行时异常-程序员宅基地

技术标签: exception  java  Java基础  

Java中异常机制的体系结构

在Java中,万物皆对象,异常也不例外。
Exception(异常)是Java的一个类,它和它的兄弟类Error一起继承自它的父类——Throwable(可抛出的)。
它们的详细的体系结构如下图所示:
在这里插入图片描述

Error(错误)

Error一般是指和虚拟机有关的一些问题,一般是由于虚拟机运行错误,系统崩溃而引起的,这些问题不能被程序自动修复或着捕获,所以在Java代码中也无法对这些问题进行处理。Error一般不会出现,但是一旦出现了,就运行发生了重大错误。
对于初学者而言,最为常见的错误,应该就是StackOverflowError(栈溢出错误),一般发生在递归调用方法的时候,没有设置方法return的条件,导致过多的方法进入虚拟机栈中,造成栈空间溢出,从而使虚拟机线程终止运行。

Exception(异常)

Exception一般分为两类,也就是运行时异常非运行时异常

运行时异常,也被称作unchecked exception(不可查异常),它只包含一类,就是Exception的子类——RuntimeException,凡是该类或者该类的子类,都被称作运行时异常。
运行时异常,一般是由于程序的设计漏洞,代码逻辑错误而造成的,一旦发生,就会直接由虚拟机终止正在运行的程序。
常见的运行时异常有:

  • NullPointerException(空指针异常)
  • IndexOutOfBoundsException(数组下标越界异常)
  • ClassCastException(类型转换异常)
  • ArrayStoreException(数据存储异常,操作数组时类型不一致)

非运行时异常,也被称作checked exception(可查异常,也被称作编译异常),Exception的子类中,除了RuntimeException之外的其它异常,都是非运行时异常,也就是编译异常。
如果是使用Eclipse或者IDEA等IDE开发工具进行开发Java代码的话,如果发生了编译异常,那么IDE会自动爆红提示。这个时候,开发者要么使用try{}catch(){}进行捕获,要么就使用throws关键字进行抛出,抛给调用该方法的那个方法,如果是main方法,则会直接由JVM处理该异常,处理机制为中断运行并打印异常信息。
常见的非运行时异常有:

  • IOException(IO异常)
  • SQLException(SQL异常)
  • ClassNotFoundException(类没有找到异常)

【注意】值得一提的是,Exception是可以被避免的,只要代码设计得足够完美,那么就可以避免异常的发生。

运行时异常和非运行时异常的区别

【处理机制】

  • 运行时异常直接由JVM进行处理,处理机制为中断运行并打印异常信息。
  • 非运行时异常由程序设计者进行处理,处理机制为try{}catch(){}或者throws。

【编译】

  • 运行时异常可以直接通过编译。
  • 非运行时异常如果不进行处理,那么编译无法通过,这也是我们为什么把非运行时异常称为编译异常的原因。

【异常发生之后】

  • 运行时异常发生之后,调用代码就不能再继续执行了。
  • 非运行时异常发生之后,代码依然可以继续执行,比如finally中的代码。

结束

Throwable家族中,大致分为三大类:Error,RuntimeException,以及其它的Exception的子类。
这三种的问题的严重程度也是由深及浅,其中异常应该是我们尽量避免的,这是作为一个优秀的程序员应该思考是事情。

最后:

public Lucky In2020() throws Exception {
    
	System.out.println("祝您好运!");
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_45193304/article/details/104146056

智能推荐

python中的库有什么作用,python库在哪个文件夹_python中导入的库有什么用-程序员宅基地

文章浏览阅读801次,点赞16次,收藏21次。嗨喽,大家好呀~这里是爱看美女的茜茜呐又到了学Python时刻~随着大数据和人工智能的发展,Python也与多种科技深深绑定。比如自动化测试,运维,爬虫,数据分析,机器学习,金融领域,后端开发,云计算,游戏开发都有涉及python画笑脸的源代码。万丈高楼平地起,Python这座大厦能够如此强大,就是拥有强大的成千上万的库的支持无数牛x的轮子在支持这座大厦,今天我们来一起梳理一下,俯瞰整个Python宝库。那么什么是库呢?从代码角度讲:库就是一堆类(class)和函数(function)的集合。_python中导入的库有什么用

springMvc 的三种url映射处理器的实现-程序员宅基地

文章浏览阅读191次。为什么80%的码农都做不了架构师?>>> ..._spring mvc通过filter实现url映射

解决 Splunk windows数据接入奇葩问题_windows日志无法自动转发到splunk-程序员宅基地

文章浏览阅读946次。Splunk 对app 下面的inputs.conf 文件到 监控路径有严格的要求。_windows日志无法自动转发到splunk

基于ubuntu搭建qemu+risc-v虚拟机流程详细说明_ubuntu安装qemu riscv-程序员宅基地

文章浏览阅读551次,点赞12次,收藏5次。我尝试过ubuntu22.04系统和windows11下vmare+ubuntu22.04虚拟机,都可以进行搭建,旧版本的ubuntu,比如20.04/18.04等,问题应该也不大,可以先尝试。将文件copy到解压后的ubuntu-22.04-rootfs文件夹中的某个目录即可,示例如下,copy一个视频文件到test文件夹,mount后,可以看到该视频文件。这时候,mount.sh,umount.sh,tar_rootfs.sh和解压后的ubuntu-22.04-rootfs文件夹处于同级目录。_ubuntu安装qemu riscv

[心跳] 互联网推送服务原理:长连接+心跳机制-程序员宅基地

文章浏览阅读47次。互联网推送消息的方式很常见,特别是移动互联网上,手机每天都能收到好多推送消息,经过研究发现,这些推送服务的原理都是维护一个长连接(要不不可能达到实时效果),但普通的socket连接对服务器的消耗太大了,所以才会出现像MQTT这种轻量级低消耗的协议来维护长连接,那么要如何维护长连接呢? 在写之前,我们首先了解一下为什么android维护长连接需要心跳机制,首先我们知道,维护任何一个长连接..._微服务 心跳原理

芯片开发语言的简单区别介绍。Verilog、VHDL、System Verilog、SystemC、Matlab、C/C++等_芯片rtl是用什么语言写的-程序员宅基地

文章浏览阅读1w次,点赞9次,收藏24次。芯片开发语言的简单区别介绍芯片设计前端的流程很长,和芯片前端相关的语言也很多,比如Verilog、VHDL、System Verilog、SystemC、Matlab、C/C++等等,但没有一个语言能够做到适合于整个前端流程;每种语言都有适合使用的领域,只有在整个前端流程的不同节点上选择最合适的语言工具,并加以整合,才能加速产品开发。注:本图引用自《SystemC: From the Groud Up》如上图所示,它显示了各种语言工具适合使用的场所,其中:Verilog、VHDL主要用于RTL建_芯片rtl是用什么语言写的

随便推点

学习Oracle数据库入门到精通教程资料合集-程序员宅基地

文章浏览阅读173次。学习Oracle数据库入门到精通教程资料合集 原文地址:学习Oracle数据库入门到精通教程资料合集 作者:xuerong_wei 任何大型信息系统,都需要有数据库管理系统作为支撑。其中,Oracle以其卓越的性能获得了广泛的应用。本合集汇总了学习Oracle数据库从入门到精通的30份教程资料。资料名称下载地址超详细Oracle教程【PDF版电子..._oracle经典教程 pdf

员工满意度模型五大维度:解析员工幸福感的关键要素_员工满意度调查五个维度-程序员宅基地

文章浏览阅读904次。通过关注工作内容与挑战、工作环境与文化、管理与领导力、个人成长与发展以及薪酬与福利等关键要素,企业可以更好地了解员工的需求和期望,从而采取相应的措施来提高员工满意度。组织应该提供培训和发展计划,帮助员工提升专业技能和领导能力,同时为员工提供晋升和职业发展的机会,以满足员工的成长需求,提高满意度。管理者要成为员工的引领者和支持者,为员工提供积极的反馈和指导,帮助他们实现个人和团队的目标,从而提高员工满意度。一个积极向上、关注员工福祉的企业文化能够增强员工的归属感和认同感,提高员工的满意度。_员工满意度调查五个维度

QQ在异地登录的原因及应付方法._qq在异地登录是怎么回事-程序员宅基地

文章浏览阅读2.7k次。有时会遇到QQ在异地登录的情况。一旦你在使用QQ的过程中遇到这样的情况,你就要小心了,因为你的密码很可能已经泄漏。  原因1:可能你没有密保,或者密保被别人知道了。  解决方法:申请第二代密码保护。  申请第二代密码保护方法:  登陆QQ——菜单——安全中心——申请密码保护——升级为第二代密码保护——设置后保存。  再打开安全中心——安全设置——网络信息安全——设置为高  原因2:你的电脑上有木马_qq在异地登录是怎么回事

javascript 将json数据导出excel_js json转excel-程序员宅基地

文章浏览阅读977次。【代码】javascript 将json数据导出excel。_js json转excel

词嵌入向量WordEmbedding的原理和生成方法_enwik8-程序员宅基地

文章浏览阅读2.7k次,点赞2次,收藏13次。词嵌入向量WordEmbedding的原理和生成方法WordEmbedding的使用WordEmbedding的生成词嵌入向量(WordEmbedding)是NLP里面一个重要的概念,我们可以利用WordEmbedding将一个单词转换成固定长度的向量表示,从而便于进行数学处理。本文将介绍WordEmbedding的使用方式,并讲解如何通过神经网络生成WordEmbedding。WordEm..._enwik8

windows10以及liunx下的Nacos下载安装,并配置连接外部mysql数据库_nacos中安装mysql和windows中装mysql有什么区别-程序员宅基地

文章浏览阅读793次。????摘要今天分享下 —— windows10 以及 liunx 下的 Nacos 下载安装,并配置连接外部 mysql 数据库 的一些基本知识,欢迎关注!欢迎阅读,总结系列:SpringCloudAlibaba 实战搭建????下载 NacosNacos 下载首先,需要去 https://github.com/alibaba/nacos/releases 下载我们需要的 Nacos 最新稳定版本,本篇博客使用的是 Nacos1.4.1 版本。Windows 下安装 Naco_nacos中安装mysql和windows中装mysql有什么区别

推荐文章

热门文章

相关标签