在Java中,万物皆对象,异常也不例外。
Exception(异常)是Java的一个类,它和它的兄弟类Error一起继承自它的父类——Throwable(可抛出的)。
它们的详细的体系结构如下图所示:
Error一般是指和虚拟机有关的一些问题,一般是由于虚拟机运行错误,系统崩溃而引起的,这些问题不能被程序自动修复或着捕获,所以在Java代码中也无法对这些问题进行处理。Error一般不会出现,但是一旦出现了,就运行发生了重大错误。
对于初学者而言,最为常见的错误,应该就是StackOverflowError(栈溢出错误),一般发生在递归调用方法的时候,没有设置方法return的条件,导致过多的方法进入虚拟机栈中,造成栈空间溢出,从而使虚拟机线程终止运行。
Exception一般分为两类,也就是运行时异常和非运行时异常。
运行时异常,也被称作unchecked exception(不可查异常),它只包含一类,就是Exception的子类——RuntimeException,凡是该类或者该类的子类,都被称作运行时异常。
运行时异常,一般是由于程序的设计漏洞,代码逻辑错误而造成的,一旦发生,就会直接由虚拟机终止正在运行的程序。
常见的运行时异常有:
非运行时异常,也被称作checked exception(可查异常,也被称作编译异常),Exception的子类中,除了RuntimeException之外的其它异常,都是非运行时异常,也就是编译异常。
如果是使用Eclipse或者IDEA等IDE开发工具进行开发Java代码的话,如果发生了编译异常,那么IDE会自动爆红提示。这个时候,开发者要么使用try{}catch(){}进行捕获,要么就使用throws关键字进行抛出,抛给调用该方法的那个方法,如果是main方法,则会直接由JVM处理该异常,处理机制为中断运行并打印异常信息。
常见的非运行时异常有:
【注意】值得一提的是,Exception是可以被避免的,只要代码设计得足够完美,那么就可以避免异常的发生。
【处理机制】
【编译】
【异常发生之后】
Throwable家族中,大致分为三大类:Error,RuntimeException,以及其它的Exception的子类。
这三种的问题的严重程度也是由深及浅,其中异常应该是我们尽量避免的,这是作为一个优秀的程序员应该思考是事情。
最后:
public Lucky In2020() throws Exception {
System.out.println("祝您好运!");
}
文章浏览阅读801次,点赞16次,收藏21次。嗨喽,大家好呀~这里是爱看美女的茜茜呐又到了学Python时刻~随着大数据和人工智能的发展,Python也与多种科技深深绑定。比如自动化测试,运维,爬虫,数据分析,机器学习,金融领域,后端开发,云计算,游戏开发都有涉及python画笑脸的源代码。万丈高楼平地起,Python这座大厦能够如此强大,就是拥有强大的成千上万的库的支持无数牛x的轮子在支持这座大厦,今天我们来一起梳理一下,俯瞰整个Python宝库。那么什么是库呢?从代码角度讲:库就是一堆类(class)和函数(function)的集合。_python中导入的库有什么用
文章浏览阅读191次。为什么80%的码农都做不了架构师?>>> ..._spring mvc通过filter实现url映射
文章浏览阅读946次。Splunk 对app 下面的inputs.conf 文件到 监控路径有严格的要求。_windows日志无法自动转发到splunk
文章浏览阅读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维护长连接需要心跳机制,首先我们知道,维护任何一个长连接..._微服务 心跳原理
文章浏览阅读1w次,点赞9次,收藏24次。芯片开发语言的简单区别介绍芯片设计前端的流程很长,和芯片前端相关的语言也很多,比如Verilog、VHDL、System Verilog、SystemC、Matlab、C/C++等等,但没有一个语言能够做到适合于整个前端流程;每种语言都有适合使用的领域,只有在整个前端流程的不同节点上选择最合适的语言工具,并加以整合,才能加速产品开发。注:本图引用自《SystemC: From the Groud Up》如上图所示,它显示了各种语言工具适合使用的场所,其中:Verilog、VHDL主要用于RTL建_芯片rtl是用什么语言写的
文章浏览阅读173次。学习Oracle数据库入门到精通教程资料合集 原文地址:学习Oracle数据库入门到精通教程资料合集 作者:xuerong_wei 任何大型信息系统,都需要有数据库管理系统作为支撑。其中,Oracle以其卓越的性能获得了广泛的应用。本合集汇总了学习Oracle数据库从入门到精通的30份教程资料。资料名称下载地址超详细Oracle教程【PDF版电子..._oracle经典教程 pdf
文章浏览阅读904次。通过关注工作内容与挑战、工作环境与文化、管理与领导力、个人成长与发展以及薪酬与福利等关键要素,企业可以更好地了解员工的需求和期望,从而采取相应的措施来提高员工满意度。组织应该提供培训和发展计划,帮助员工提升专业技能和领导能力,同时为员工提供晋升和职业发展的机会,以满足员工的成长需求,提高满意度。管理者要成为员工的引领者和支持者,为员工提供积极的反馈和指导,帮助他们实现个人和团队的目标,从而提高员工满意度。一个积极向上、关注员工福祉的企业文化能够增强员工的归属感和认同感,提高员工的满意度。_员工满意度调查五个维度
文章浏览阅读2.7k次。有时会遇到QQ在异地登录的情况。一旦你在使用QQ的过程中遇到这样的情况,你就要小心了,因为你的密码很可能已经泄漏。 原因1:可能你没有密保,或者密保被别人知道了。 解决方法:申请第二代密码保护。 申请第二代密码保护方法: 登陆QQ——菜单——安全中心——申请密码保护——升级为第二代密码保护——设置后保存。 再打开安全中心——安全设置——网络信息安全——设置为高 原因2:你的电脑上有木马_qq在异地登录是怎么回事
文章浏览阅读977次。【代码】javascript 将json数据导出excel。_js json转excel
文章浏览阅读2.7k次,点赞2次,收藏13次。词嵌入向量WordEmbedding的原理和生成方法WordEmbedding的使用WordEmbedding的生成词嵌入向量(WordEmbedding)是NLP里面一个重要的概念,我们可以利用WordEmbedding将一个单词转换成固定长度的向量表示,从而便于进行数学处理。本文将介绍WordEmbedding的使用方式,并讲解如何通过神经网络生成WordEmbedding。WordEm..._enwik8
文章浏览阅读793次。????摘要今天分享下 —— windows10 以及 liunx 下的 Nacos 下载安装,并配置连接外部 mysql 数据库 的一些基本知识,欢迎关注!欢迎阅读,总结系列:SpringCloudAlibaba 实战搭建????下载 NacosNacos 下载首先,需要去 https://github.com/alibaba/nacos/releases 下载我们需要的 Nacos 最新稳定版本,本篇博客使用的是 Nacos1.4.1 版本。Windows 下安装 Naco_nacos中安装mysql和windows中装mysql有什么区别