【Java异常】(简简单单拿捏)

【Java异常】(简简单单拿捏)

  • 1. 异常的简单介绍
  • 2. 异常的抛出
    • 2.1 语法
  • 3. 异常的处理
    • 3.1 异常声明throws
    • 3.2 try-catch捕获并处理
  • 4. 例子(try-catch+自定义异常)

1. 异常的简单介绍

程序员在运行代码时会遇到很多异常,比如:数组越界异常,空指针异常。

我们可以将异常分为两个部分:

编译时异常在程序编译时发生的异常
运行时异常在程序运行时发生的异常

2. 异常的抛出

2.1 语法

throw new XXXException("异常产生的原因")

注意事项

  1. throw 必须写下方法体内部
  2. 抛出的对象必须是Exception或者Exception的子类对象
  3. 如果抛出的是RunTimeException 或者RunTimeException的子类,则可以不用处理,直接交给JVM处理
  4. 如果抛出的是编译时异常,用户必须处理,否则无法通过编译
  5. 异常一旦抛出,后续代码将不会执行

3. 异常的处理

异常的具体处理方式,主要有两种:异常声明throw以及try-catch捕获处理

3.1 异常声明throws

当方法抛出编译时异常,用户不想处理异常,此时就可以将异常借助throw抛出给方法的调用者来处理。即当前方法不处理异常,提醒方法的调用者处理异常。

声明的语法:

修饰符 返回值类型 方法名(参数列表)throw 异常类型1,异常类型2…{

}

例题

public class Main {public static void func(String password) throws Exception{//判断密码是否正确,不正确则抛出异常if(!password.equals("llll")){throw new Exception("密码错误");}}public static void main(String[] args) throws Exception {//异常的声明func("lll");}
}

上述代码运行时抛出异常
在这里插入图片描述

3.2 try-catch捕获并处理

throws对异常并没有真正地处理,而是将异常报告给抛出异常方法的调用者,由调用者处理。如果真要对异常处理,就需要try-catch。

try-catch的语法格式

try{
//将可能会出现异常的代码放这里
}catch(要捕获的异常类型 e){
//如果try中代码抛出异常了,并且和catch捕捉的异常类型一致,或者是catch捕捉到的异常是try中抛出异常的基类时,就会被捕捉到
//对异常进行处理,处理完成后跳出try-catch结构,继续进行后续的代码
}catch(要捕获的异常类型 e){
//对异常进行处理
}finally{
//代码一定会被执行
}

4. 例子(try-catch+自定义异常)

这里的例子直接和自定义异常一起讲了呦

首先了解一下自定义异常:
我现在要检查输入的账号和密码是否出现异常,所以我先分别创建AccentException和PasswordException,
然后让上述两个自定义异常继承Exception

代码操作如下所示

public class AccentException extends Exception{public AccentException() {super();}public AccentException(String message) {super(message);}
}
public class PasswordException extends Exception{public PasswordException() {super();}public PasswordException(String message) {super(message);}
}

创建完我们的自定义异常,我们就可以使用try-catch来抛出自定义异常,具体操作如下所示

public class Demo {public static void people(String account,String password)throws AccentException,PasswordException{if(!account.equals("111112")){throw new AccentException("账号异常");}if(!password.equals("dddddd")){throw new PasswordException("密码错误");}System.out.println("登录成功");}public static void main(String[] args) throws PasswordException, AccentException {try{people("11","kk");}catch(AccentException e){e.printStackTrace();}catch (PasswordException e){e.printStackTrace();}}
}

在这里插入图片描述

根据分析可知,上述账号和密码都出现了错误,但是结果只抛出账号异常,这里在上面也提到过,
try-catch在使用的过程中一旦抛出一个异常,直接跳出try-catch结构,所以这里只抛出一个异常。

由于Java异常这一部分还挺简单的,所以这篇文章没有太多的图文解释,之后在下一篇顺序表中也有Java异常的使用,如果感兴趣的朋友,大家移至下一篇顺序表呦~

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

T8:猫狗识别

T8周:猫狗识别 **一、前期工作**1.设置GPU,导入库2.导入数据3.查看数据 **二、数据预处理**1.加载数据2.可视化数据3.配置数据集 **三、构建CNN网络模型****四、编译模型****五、训练模型****六、模型评估****七、预测**八、总结1、[train_on_batch 和 test_on_batc…

ICAS英格尔认证闪耀2024汽车供应链降碳峰会,引领行业绿色发展新潮流

在推动全球绿色发展的大潮中,汽车供应链的降碳和可持续发展成为了行业内的热点议题。在这个关键时刻,《2024中国汽车供应链降碳和可持续国际峰会》在上海隆重举行,吸引了众多行业领袖和专家的目光。作为认证领域的佼佼者,ICAS英格…

THREE.JS法线Shader

以普通情况而论 vNormal normal;//...gl_FragColor vec4( vNormal, 1. );vNormal normal;//...gl_FragColor vec4( normalize( vNormal ) * 0.5 0.5, 1. );vNormal normalMatrix * normal;//...gl_FragColor vec4( normalize( vNormal ) * 0.5 0.5, 1. );normalMa…

从 0 到 1:互联网产品经理核心技能全解析

在互联网的浩瀚海洋中,产品经理如同领航员,决定着产品从无到有的走向和命运。从 0 到 1 打造一款互联网产品,需要产品经理具备多方面的核心技能。今天,我们就来详细解读这些关键能力。 一、洞察市场趋势 时刻关注行业动态 互联网…

征程6 上基于 DEB 工具实现包管理

1.引言 在开发、调测过程中,开发人员需要将系统软件、应用软件部署到 Soc 板端,以用于运行调试。传统的部署方式是通过解压复制或者调用部署脚本。这样的部署方式需要有着方式不统一、维护投入大的缺点。 在 linux 系统上,大多采用包管理的…

前端学习笔记-JS进阶篇-01

作用域&解构&箭头函数 1、作用域 作用域(scope)规定了变量能够被访问的“范围”,离开了这个“范围”变量便不能被访问 1.1、局部作用域 局部作用域分为函数作用域和块作用域 1.1.1、函数作用域 在函数内部声明的变量只能在函数…

PSO粒子群代码手搓实现—代码详解版python

PSO粒子群算法手搓实现版🚀 读了博士之后,送算法方向转到了控制方向,然后最近接触到的项目,要用到粒子群算法,然后秉持着我自己一贯的把基础代码自己手写一遍的原则,我自己上网找了一些视频,然后…

大型模型智能体:最先进的合作范式、安全与隐私以及未来趋势

摘要—大型模型智能体(LM agents),由如 GPT-4 和 DALL-E 2 等大型基础模型驱动,代表了实现人工通用智能(AGI)的重要一步。LM 智能体展示了自主性、具身性和连接性等关键特征,使其能够在物理、虚…

大豆重测序-文献精读53

Natural variation in GmSW17 controls seed size in soybean GmSW17的自然变异控制大豆种子的大小 摘要 种子大小/重量在决定作物产量中起着重要作用,但在大豆中,仅有少数控制种子大小的基因被鉴定出来。在本研究中,我们进行了全基因组关联…

人工智能中的RAG、Agent与Agentic RAG各有什么作用?

人工智能技术的迅猛发展正催生着各行业的变革与创新浪潮。在此背景下,检索增强生成(RAG)、人工智能代理(Agent),以及两者结合形成的新理念Agentic RAG成为了关注的热点。本文将详细探讨这三项技术的概念、原…

产销皆下行,造势口碑遭“反噬”,魏建军能否重振长城汽车?

今年以来,长城汽车可谓多次被打在舆论聚光灯下,既有“一把手”魏建军一反此前低调务实作风而在今年多次于公共场合慨慷激昂频出“金句”宏观层面的;也有旗下多款车型销量数据出现下滑的微观层面。 近日,长城汽车披露了2024年1-8月…

AI产品经理必知:核心人工智能技术概览

第一章:AI产品经理是否需要懂技术及其程度 在当今AI行业快速发展的背景下,作为一位AI产品经理,理解并掌握一定的AI技术知识不仅是锦上添花,更是不可或缺的素质。那么,AI产品经理究竟需要懂到何种程度的技术呢&#xf…

面试中如何做自我介绍

一般人在做自我介绍的时候,可能会存在的问题: 1、表述不太流畅。多练习表述,自己录音,听回放,有问题改正。 2、表述太溜,语速太快。不自信表现,隐含紧张的情绪。 3、面试官,大家好…

【MySQL】常见的SQL优化方式(一)

目录 1、插入数据 (1)批量插入 (2)手动提交事务 (3)主键顺序插入 2、主键优化 (1)页分裂 (2)页合并 3、order by 优化 (1)排…

代码随想录算法训练营第58天 | 1、软件构建,2、参加科学大会

目录 1、软件构建 2、参加科学大会 1、软件构建 题目描述 某个大型软件项目的构建系统拥有 N 个文件,文件编号从 0 到 N - 1,在这些文件中,某些文件依赖于其他文件的内容,这意味着如果文件 A 依赖于文件 B,则必须在…

测试用例的举例

1. 基于测试公式设计测试用例 通过功能,性能,安全性,界面,安全性,易用,兼容对于一个水杯进行测试用例的设计; 对于一个软件的测试用例设计: 功能:软件本质上能够用来干什…

怎样用云手机进行TikTok矩阵运营?

在运营TikTok矩阵时,许多用户常常面临操作复杂、设备过多等问题。如果你也感到操作繁琐,不妨考虑使用云手机。云手机具备丰富的功能,能够帮助电商卖家快速打造高效的TikTok矩阵。接下来,我们将详细解析这些功能如何提升你的运营效…

【ADC】SAR 型 ADC 和 ΔΣ ADC 的噪声源以及输入信号驱动和电压基准驱动电路

本文学习于TI 高精度实验室课程,简要介绍 SAR 型 ADC 和 ΔΣ ADC 的输入信号驱动和电压基准驱动电路,并介绍 SAR 和 Delta-Sigma 转换器的内在和外在噪声源。 文章目录 一、ADC 的外部噪声1.1 50/60 Hz 工频干扰1.2 混叠与抗混叠滤波器1.3 射频&#xf…

深度学习(入门)03:监督学习

1、监督学习简介 监督学习(Supervised Learning)是一种重要的机器学习方法,它的目标是通过“已知输入特征”来预测对应的标签。在监督学习中,每一个“特征-标签”对被称为样本(example),这些样…

高效快捷回复软件

当你的店铺正如火如荼地运营时,你是否曾因为繁琐的客服回复工作而感到力不从心?自己创业、自营客服或是外包客服,都需要一个强大的工具来帮助你高效处理客户咨询。那么,这款全新的高效快捷回复软件—客服宝聊天助手,就…