Java-Exception-异常处理

2023-10-30

一.基本介绍

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

二、异常处理的方式

1) try-catch-finally

程序员在代码中捕获发生的异常,自行处理

2) throws

将发生的异常抛出,交给调用者(方法)来处理,最顶级的处理者就是JVM

try-catch-finally处理机制示意:

程序

try {

代码/可能有异常

....

}catch(Exception e) {

//捕获到异常

//1.当异常发生时

//2.系统将异常封装成Exception对象e,传递给catch

//3.得到异常对象后,程序员,自己处理

//4.注意,如果没有发生异常catch代码块不执行

}finally{

//1.不管try代码块是否有异常发生,始终要执行finally

//2.所以,通常将释放资源的代码,放在finally

}

throws处理

1.try-catch-finally和throws二选一

2.如果程序员,没有显示是处理异常,默认throws

try-catch异常处理

1) Java提供try和catch块来处理异常。try块用于包含可能出错的代码。catch块用于处理try块中发生的异常。可以根据需要在程序中有多个try...catch块.

2)基本语法

try {

//可疑代码

//将异常生成对应的异常对象,传递给catch块

}catch(异常){

//对异常的处理

}

//如果没有finally.语法是可以通过

try-catch异常处理-注意事项

  1. 如果异常发生了,则异常发生后面的代码不会执行,直接进入到catch块.
  2. 如果异常没有发生,则顺序执行try的代码块,不会进入到catch.
  3. 如果希望不管是否发生异常,都执行某段代码(比如关闭连接,释放资源等)

则使用如下代码- finally {}

try {

//可疑代码

}catch(异常){

//对异常的处理

 }finally{

//释放资源

}

  1. 可以有多个catch语句,捕获不同的异常(进行不同的业务处理),要求父类异常在后,子类异常在前,比如(Exception在后,NullPointerException在前),如果发生异常,只会匹配一个catch

5)可以进行 try-finally配合使用,这种用法相当于没有捕获异常,因此程序会直接崩掉/退出。应用场景,就是执行一段代码,不管是否发生异常,都必须执行某个业务逻辑

throws异常处理

1、基本介绍

1)如果一个方法(中的语句执行时)可能生成某种异常,但是并不能确定如何处理这种异常,则此方法应显示地声明抛出异常,表明该方法将不对这些异常进行处理,而由该方法的调用者负责处理。

2)在方法声明中用throws语句可以声明抛出异常的列表,throws后面的异常类型可以是方法中产生的异常类型,也可以是它的父类。

最后

1)对于编译异常,程序中必须处理,比如try-catch或者throws

2)对于运行时异常,程序中如果没有处理,默认就是throws的方式处理

3)子类重写父类的方法时,对抛出异常的规定:子类重写的方法,所抛出的异常类型要么和父类抛出的异常一致,要么为父类抛出的异常的类型的子类型

4)在throws 过程中,如果有方法 try-catch,就相当于处理异常,就可以不必throws指针

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java-Exception-异常处理 的相关文章

随机推荐

  • C++之虚函数

    都说面向对象的三大特性是封装 继承 多态 C 作为一门面向对象编程语言 肯定也是具备了面向对象的三大特性 那么在C 中是如何实现多态的呢 在C 中是通过虚函数动态绑定的方式实现多态的 虚函数与纯虚函数 首先我们来回顾一下虚函数 在C 中是使
  • Vue3 defineProp传参以及defineEmits事件传递详细解释

    defineProp父子组件传参 vue3中引用另一个组件非常简单 不再需要设置各个组件的name 直接import导入即可 下方代码 父组件为PropSuper vue 子组件为PropBase vue
  • [关系图谱] 二.Gephi导入共线矩阵构建作者关系图谱

    本文主要讲解Gephi绘制作者间的关系图谱 该软件可以广泛应用于社交网络 知识图谱分析 推荐读者使用 这是非常基础的一篇文章 重点讲解Gephi使用方法 希望对大家有所帮助 推荐前文 python数据挖掘课程 十七 社交网络Networkx
  • 算法知识点

    维生素C吃多了会上火 个人CSDN博文目录 2022蓝桥杯 目录 语法 基础算法 提升算法 语法 指针 标准输入输出 队列 结构体 c STL 基础算法 排序算法 树 二叉树 提升算法
  • Ping工具ICMP报文学习

    首先 这里有一个很好的博客 入口 先说个结论 Ping是通过IP ICMP协议发出去的 这跟我们传统UDP和TCP不一样 其通过创建套接字直接从IP层接受数据 具体可以参照上述文档 为什么ICMP的ping和tracert不经过tcp或ud
  • 面向对象编程的三大特性

    面向对象编程主要体现为三个特性 1 封装性 面向对象编程的核心思想之一就是将数据和对数据的操作封装在一起 通过抽象 即从 具体的实例中抽取出共同的性质形成一般的概念 例如类的概念 Java 中属性的封装 无特殊情况都是用的 private
  • InputAction的使用

    感觉Unity中InputAction的使用 步步都是坑 需求点介绍 当用户长按0 5s 键盘X或者VR left controller primaryButton 即X键 时 显示下一个图片 步骤总览 创建InputAction资产 将该
  • 数据库杂谈(三)——关系代数

    3 形式化关系查询语言 摘要 关系代数是一种抽象的查询语言 用对关系的运算来表达查询 作为研究关系数据语言的数学工具 在本文中 我们不仅谈论关系代数的知识点 而且还配备了对应的练习题 文章目录 3 形式化关系查询语言 3 1 关系代数 3
  • 【笔记】C++笔记

    1 书写HelloWorld include
  • ICML 2015压轴讨论总结:6大神畅谈深度学习的未来

    原文地址 http www csdn net article 1970 01 01 2825290
  • Error during WebSocket handshake: Unexpected response code: 404,springboot整合websocket出错

    Error during WebSocket handshake Unexpected response code 404 浏览器访问websocket出现错误 一 运行环境 二 需要引入的包 三 项目路径 四 工具类 五 静态页面以及js
  • CPU一级缓存L1 D-cache\L1 I-cache与二级缓存L2 cache深度分析

    CPU缓存 通过优化的的读取机制 可以使CPU读取缓存的命中率非常高 大多数CPU可达90 左右 也就是说CPU下一次要读取的数据90 都在缓存 SRAM 中 只有大约10 需要从内存 DRAM DDR等 读取 这大大节省了CPU直接读取内
  • 算法篇:贪心算法解决田忌赛马问题

    田忌赛马 贪心算法 问题分析 这是一道很经典的贪心算法入门题 这道题贪心的思想是 要把每一匹马的作用发挥到最大 把已 方赢的概率增加到最大 我是从双方慢马的角度来分析的 其实快马和慢马的思路差不多 用田忌最慢的马与王最慢的马相比较 1 如果
  • Spring 中如何为Bean注入集合呢?

    转自 Spring 中如何为Bean注入集合呢 下文讲述Spring中为Bean注入集合的方法分享 如下所示 常见的集合类型有 List Set Map 和 properties 标签 集合名称 说明
  • DC-DC电源转换电路设计

    第1条 搞懂DC DC电源怎么回事 DC DC电源电路 又称为DC DC转换电路 其主要功能就是进行输入输出电压转换 一般我们把输入电源电压在72V以内的电压变换过程称为DC DC转换 常见的电源主要分为车载与通讯系列和通用工业与消费系列
  • 【ES】多字段聚合分析

    public static Map
  • Vscode python配置了numpy包之后无法调用

    如果之前已经在vscode中配置好了numpy等其他库并且运行成功了 突然换了一个文件打开 如果发现找不到numpy库 很大可能是vscode将你的python解释器给更换了 如上所示 除了自己安装的python解释器之外 还有内置的和其他
  • 《QDebug 2023年6月》

    一 Qt Widgets 问题交流 二 Qt Quick 问题交流 1 Qt5 的 QML Settings 没有设置编码的接口 Qt6 虽然移除了 QSettings 的 setIniCodec 接口 默认为 utf8 但是 Qt5 这个
  • FPGA — BRAM 队列实践

    使用软件 Vivado 开发板 EGO1采用Xilinx Artix 7系列XC7A35T 1CSG324C FPGA BRAM 队列实践 功能描述 功能实现 1 添加BRAM的IP 2 数码管显示 3 时钟分频 4 按键消抖 5 顶层设计
  • Java-Exception-异常处理

    一 基本介绍 异常处理就是当异常发生时 对异常处理的方式 二 异常处理的方式 1 try catch finally 程序员在代码中捕获发生的异常 自行处理 2 throws 将发生的异常抛出 交给调用者 方法 来处理 最顶级的处理者就是J