【从C++到Java一周速成】章节11:异常的处理

章节12:异常的处理

  • 【1】try-catch-finally
  • 【2】throw和throws
    • throw用法

异常就是在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序。

常见异常,例如:
所需文件找不到
网络连接不通或中断
算术运算错(除0)
数组下标越界
装载一个不存在的类或对null对象操作
类型转换异常

Java提供异常处理机制。它将异常处理代码和业务代码分离,使程序更优雅,更好的容错性,高健壮性。

Java 的异常处理通过5个关键字实现:try、catch、finally、throw、throws

【1】try-catch-finally

try-catch执行三种情况:

  1. try块中没有出现异常:
    跳过不执行catch块代码
  2. try块中出现异常,catch块中匹配到对应的异常类型(相同或者父类):
    遇到异常后try块中尚未执行的代码不再执行,Java会生成相应的异常对象,Java系统寻找匹配的catch块,执行catch块代码。程序不会中断,catch块后面的代码正常执行。
  3. try块中出现异常,catch块中异常类型不匹配:
    不执行catch块代码,程序直接中断运行。
    finally中的代码是以上三种情况都会执行的
public class test {public static void main(String[] args) {try{int num1=12;int num2=0;System.out.println("两个数的商为"+num1/num2);} catch (Exception e){System.out.println("catch到异常之后会输出");}finally{System.out.println("程序无论是否出现异常都必定执行");}System.out.println("上面是两个数相除的结果");}
}

【2】throw和throws

throw用法

1.人为创造异常对象

public class test2 {public static void main(String[] args) {devide();}public static void devide(){int num1=12;int num2=0;if(num2==0){try{throw new Exception();}catch (Exception e) {System.out.println("这里的异常我自己处理");}}else{System.out.println("两个数相处的结果是"+num1/num2);}}
}

2.向外层抛出异常(我自己不处理这个异常,甩锅给别人处理)

public class test2 {public static void main(String[] args) {try{devide();}catch(Exception e) {System.out.println("devide方法发生异常");}}public static void devide() throws Exception{int num1=12;int num2=0;if(num2==0){throw new Exception();}else{System.out.println("两个数相处的结果是"+num1/num2);}}
}

throw和throws的区别:

  1. 位置不同
    throw:方法内部
    throws:方法的签名处,方法的声明处
  2. 内容不同
    throw+异常对象
    throws+异常的类型
  3. 作用不同
    throw:异常出现的源头,制造异常
    throws:在方法的声明处,告诉方法调用者,这个方法中可能会出现我声明的这些异常。调用者需要针对这个可能的异常用try-catch进行处理,或者是继续向外抛出。

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

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

相关文章

前端实现打印功能

1、引入打印相关的库 在您的Vue项目中,需要先安装一个用于打印的库,如print-js。您可以通过以下命令安装: npm install print-js --save2、在组件中引入并使用,在需要实现打印功能的组件中,先import print-js模块: import print…

SpringBoot Bean

配置优先级 Bean的管理 从IOC容器中获取Bean对象:注入IOC容器对象 bean的作用域 Bean对象默认在容器启动时实例化 Lazy在第一次使用时初始化 Bean的管理:第三方Bean 引入依赖,每次解析创建新对象,浪费资源 将第三方对象交给…

如何搭建springBoot项目中的全局异常处理和自定义异常处理

目录 1 什么是异常 2 异常的种类 3 解决异常的方式 4 全局异常处理器和自定义异常处理器 5 测试异常处理 1 什么是异常 异常(Exception)是在程序执行过程中出现的一种特殊情况或错误。它可以是由于程序逻辑错误、运行环境问题、用户输入错误等原因…

【AI基础】反向传播

文章目录 1. 先写出第一步2.将其封装成函数3. pytorch版 1. 先写出第一步 # 定义输入值和期望输出 x_1 40.0 x_2 80.0 expected_output 60.0 初始化# 定义权重 w_1_11 0.5 w_1_12 0.5 w_1_13 0.5 w_1_21 0.5 w_1_22 0.5 w_1_23 0.5w_2_11 1.0 w_2_21 1.0 w_2_31 1…

基于 vLLM 搭建 DeepSeek-V2 Chat 服务

直奔主题。 安装vLLM 官方实现的代码还没有 merge 到 vLLM 主分支,所以直接 git clone DeepSeek 的分支。 git clone https://github.com/zwd003/vllm.git cd vllm pip install -e .源码安装大概耗时 10 分钟。 OpenAI 接口规范启动 官方 Github 放的是单条推理…

useState和setState的用法和区别

setState是类组件中用来更新状态的方法, 而useState是函数组件中用来声明并初始化状态的Hook。 在使用useState时,可以直接在函数组件中声明并初始化一个状态变量,也可以使用数组结构来获取状态变量和更新函数。 而在类组件中,需…

物流单管理系统软件教程

佳易王物流单打印软件,物流快运单据模板格式,佳易王物流管理

通过短信群发平台拓客引流营销的效果好不好?

通过短信群发平台进行营销拓客引流的效果可以是非常显著的,但具体效果会受到多种因素的影响,如目标受众的选择、短信内容的吸引力、发送时间和频率的合理性等。 以下是一些短信群发平台营销拓客引流的优势: 1.广泛覆盖:短…

噪声条件分数网络——NCSN原理解析

1、前言 本篇文章,我们讲NCSN,也就是噪声条件分数网络。这是宋飏老师在2019年提出的模型,思路与传统的生成模型大不相同,令人拍案叫绝!!! 参考论文: ①Generative Modeling by Es…

cesium圆形扩散扫描效果封装

效果 封装类 优化了着色器代码;增加了边框大小调整参数,增加了清除效果方法 注:在页面销毁时需要调用清除方法 CircleDiffusion.clear()/*** circleDiffusion:圆扩散特效封装类**/// 圆扩散 class CircleDiffusion {viewer;last…

docker容器安装nexus3以及nexus3备份迁移仓库数据

一、安装步骤 1.搜索nexus3镜像 docker search nexus3 2.拉取镜像 docker pull sonatype/nexus3或者指定版本 docker pull sonatype/nexus3:3.68.0 3.查看拉取的镜像 docker images | grep "nexus3" 4.启动nexus服务 直接启动 docker run -d --name nexus3 -…

怎么查看公网IP?

在网络通信中,每个设备都会被分配一个IP地址,用于在互联网上进行唯一标识和通信。公网IP是指可以被公开访问的IP地址,可以用来建立远程连接或者进行网络访问等操作。怎么查看公网IP呢?下面将介绍几种常用的方法。 使用命令行查询公…

LabVIEW高温往复摩擦测试系统中PID控制

在LabVIEW开发高温往复摩擦测试系统中实现PID控制,需要注意以下几个方面: 1. 系统建模与参数确定 物理模型建立: 首先,需要了解被控对象的物理特性,包括热惯性、摩擦系数等。这些特性决定了系统的响应速度和稳定性。实验数据获取…

吉时利Keithley 2010数字万用表7.5 位

Keithley 2010数字万用表,7.5 位 吉时利 2010 数字万用表、7.5 位、低噪声万用表将高分辨率与生产应用所需的高速度和高准确度相结合,例如测试精密传感器、换能器、A/D 和 D/A 转换器、调节器、参考、连接器、开关和继电器。2010 基于与吉时利 2000、20…

人工智能应用-实验6-卷积神经网络分类minst手写数据集

文章目录 🧡🧡实验内容🧡🧡🧡🧡代码🧡🧡🧡🧡分析结果🧡🧡🧡🧡实验总结🧡🧡 &#x1f9…

521源码-在线客服-CRMChat网页版客服系统 UNIAPP 全方位在线客服系统源码与管理体系平台

CRMChat客服系统:基于Swoole4Tp6RedisVueMysql构建的高效沟通桥梁 CRMChat是一款独立且高性能的在线客服系统,它结合了Swoole4、Tp6、Redis、Vue以及Mysql等先进技术栈,为用户提供了卓越的在线沟通体验。该系统不仅支持在Pc端、移动端、小程…

列表页9大样式,保准你看了就能掌握。

上文:一张图集齐B端列表页的16大组件,召唤神龙,看后恍然大悟。 普通列表/基础列表/常规列表 不适合移动端展示 复杂列表 加入了统计 适合移动端 项目列表 适合移动端 应用列表 适合移动端 多级列表 复杂的多级结构,下图展示了…

美国教育数据分析

文章目录 第1关:认识数据第2关:数据预处理第3关:数学成绩预测 第1关:认识数据 编程要求 根据提示,在右侧Begin-End区域补充代码,查看数据属性名称。 测试说明 程序会调用你实现的方法,查看数据…

SpringBoot——整合MyBatis

目录 MyBatis 项目总结 1、创建SQL表 2、新建一个SpringBoot项目 3、pom.xml添加依赖 4、application.properties配置文件 5、User实体类 6、UserMapper接口 7、UserMapper.xml映射文件 8、UserController控制器 9、SpringBootMyBatisApplication启动类 10、使用Po…

C语言 | Leetcode C语言题解之第98题验证二叉搜索树

题目: 题解: /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ bool isValid(struct TreeNode * root,long left,long right){if(!root){return true;}long…