异常 Exception 02

异常 Exception 02

  • 六、异常处理
    • 1、基本介绍
    • 2、异常处理的方式
    • 3、示意图
    • 4、try-catch

六、异常处理

1、基本介绍

异常处理就是当异常发生时,对异常处理的方式。

2、异常处理的方式

  1. try-catch-finally
    程序员在代码中捕获发生的异常,自行处理
  2. throws
    将发生的异常抛出,交给调用者(方法)来处理,最顶级的处理者就是 JVM

3、示意图

(1) try-catch-finally 处理机制

	try {代码/可能有异常} catch(Exception e) {捕获到异常1、当异常发生时2、系统将异常封装成 Exception 对象e,传递给catch3、得到异常对象后,程序员自己处理4、注意,如果没有发生异常,catch代码块不执行} finally {1、不管try代码块是否有异常发生,都要执行finally2、所以,通常将释放资源的代码放在finally}

(2)throws 处理机制图

JVM 调用main方法,main调用 f1,f1 中 调用 f2,f2 抛出(发生)异常。
f2 抛出异常可以使用 ① try-catch-finally ② throws 机制,扔出去,f2 说它不管,抛给 f1(因为是 f1 调用它的),
f1也有两种选择,它也可以继续丢出去 throws。
扔给JVM,处理异常非常暴力,直接①输出异常信息 ②退出程序。
在这里插入图片描述

(1)try-catch-finally 和 throws 二选一
(2)如果程序员,没有显式处理异常,默认throws

在这里插入图片描述

4、try-catch

  1. Java提供 try 和 catch 块来处理异常。try 块用于包含可能出错的代码。catch 块用于处理 try 块中发生的异常。可以根据需要在程序中有多个 try…catch 块。finally 可写可不写。
  2. 基本语法
try {可疑代码将异常生成对应的异常对象,传递给catch} catch(异常){对异常的处理
}
没有finally也是可以滴
  1. IDEA中的快捷键

CTRL + ALT + T

  1. 【重要】注意事项
    ① 如果异常发生了,则异常发生后面的代码不会执行,直接进入到catch块。【案例A】
    ② 如果异常没有发生,则顺序执行try的代码块,不会进入到catch。
    ③ 如果希望不管是否发生异常,都执行某段代码(比如关闭连接,释放资源等) 则使用如下代码 - finally {}。
    ④ 可以有多个catch语句,捕获不同的异常(进行不同的业务处理,要求父类异常在后,子类异常在前,比如(Exception在后,NullPointerException 在前),如果发生异常,只会匹配一个catch。【案例B】
    ⑤ 可以进行try-finally配合使用,这种用法相当于没有捕获异常,因此程序会直接退出/崩掉。应用场景,就是执行一段代码,不管是否发生异常,都必须执行某个业务逻辑。

【举例A】

public static void main(String[] args) {try {String str = "XXXXXXX";System.out.println("=========");int a = Integer.parseInt(str);System.out.println("+++++++++");System.out.println("数字:" + a);} catch (NumberFormatException e) {e.printStackTrace();}
}

int a = Integer.parseInt(str);这句话会报错,直接跳到 catch块
在这里插入图片描述
【举例B】

public class TryCatchDetail02 {public static void main(String[] args) {try {Person person = new Person();person = null;System.out.println(person.getName());//NullPointerExceptionint n1 = 10;int n2 = 0;int res = n1/n2;//ArithmeticException} catch (NullPointerException e) {System.out.println("空指针异常=" + e.getMessage());} catch (ArithmeticException e) {System.out.println("算数异常=" + e.getMessage());} catch (Exception e) {//Exception是 NullPointerException 和ArithmeticException的父类System.out.println(e.getMessage());} finally {}}
}class Person {private String name = "jack";public String getName() {return name;}
}

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

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

相关文章

学习笔记三十六:通过Ingress-nginx实现灰度发布

通过Ingress-nginx实现灰度发布 灰度发布原理将新版本灰度给部分用户切一定比例的流量给新版本 部署两个版本的服务以 nginx 为例,先部署一个 v1 版本:部署一个 v2 版本再创建一个 Ingress,对外暴露服务,指向 v1 版本的服务:访问验证 基于 He…

【idea】设置鼠标滚轮控制缩放大小

1、点击file 选择Setting 2、点击Editor 下面的 General 3、勾选 Mouse Control 下面的 Change font size with CtrlMouse Wheel in 4、点级apply 5、按 ctrl键 鼠标滚轮缩放字体的大小

异常 Exception 01

《 异常 Exception 》 异常的概念 异常体系图(!!) 常见的异常 异常处理概念 异常处理分类 自定义异常 throw和throws的对比 异常 Exception 01 一、引入二、介绍基本概念执行过程中所发生的异常事件可分为两类 三、异常体系图四、常见的运行时异常1、NullPointerException空指针…

大模型的RPA应用 | 代理流程自动化(APA),开启智能自动化新纪元

随着技术创新的持续推进,自动化技术已经变得至关重要,成为驱动企业和社会向前发展的核心动力。在自动化的里程碑中,机器人流程自动化(RPA)已经有效地将简单、重复且规则性的任务自动化。可是随着对处理更为复杂、多变且…

flutter开发实战-readmore长文本展开和收缩控件

flutter开发实战-readmore长文本展开和收缩控件 当长文本展开和收缩控件,我们需要使用readmore来处理长文本展开和收缩,方便阅读 一、引入readmore 在工程的pubspec.yaml中引入插件 readmore: ^2.1.0ReadMoreText的属性如下 const ReadMoreText(this.…

【Axure教程】用中继器制作多选树

“多选树”可能指的是一种用户界面元素,用于展示层级结构并允许用户选择多个节点。这在软件应用程序中常用于设置、文件浏览器等场景。 Axure里面虽然自带了一个树元件,但是并没有多选的功能,所以今天就教大家如何用中继器制作一个多选树的基…

Git——工作区管理

如何管理工作目录,以便用户可以更高效地新建提交。如何在处理工作区和暂存区文件的过程中修复错误,以及如何修复最近一次提交记录中的问题;同时还会了解到如何安全地使用暂存机制和多个工作目录处理工作流中的中断问题。 主要内容有以下几点…

DC电源模块的基本工作原理和应用

BOSHIDA DC电源模块的基本工作原理和应用 DC电源模块是一种能够将交流电转化为直流电的电子装置。它的基本工作原理是利用变压器、整流桥、电容滤波、电压稳定器等电路组成,将输入的交流电转换为稳定的直流电输出。这种直流电源模块通常可以提供不同的电压和电流输…

算法通关村第十三关-白银挑战数字与数学高频问题

大家好我是苏麟 , 今天带来数字与数学的高频问题 . 加一 描述 : 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个…

分布式技术(二)注册中心

💌 所属专栏:【微服务】😀 作 者:长安不及十里💻 工作:目前从事电力行业开发🌈 目标:全栈开发🚀 个人简介:一个正在努力学技术的Java工程师,专注基…

Python条件判断:解读逻辑演绎,优化编程思维

更多资料获取 📚 个人网站:ipengtao.com 条件判断是编程中的重要概念,Python语言提供了多种方式来进行条件判断,例如if、else、elif等。本文将深入探讨Python中条件判断的灵活应用,结合丰富的示例代码展示其全面性。 …

ant design vue3 处理 ant-card-head ant-tabs靠左边对齐之has选择器不生效

火狐浏览器是不支持has的。 解决方法:通过position来解决。