当前位置: 首页 > news >正文

【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异常的使用,如果感兴趣的朋友,大家移至下一篇顺序表呦~

相关文章:

  • 剑指 offer 刷题集
  • java 生成.h文件,java调用c语言dll动态链接库流程
  • uni-app App版本更新
  • C语言习题~day33
  • react通过下拉框选择多个,并展示在下方的方式
  • 【工具分享】Darkside勒索病毒解密工具
  • 每天五分钟深度学习框架pytorch:激活函数在神经网络中的应用
  • 数据结构—(java)反射,枚举,lambda表达式
  • 开发受用户喜欢有声听书APP:快速满足用户需求的秘诀
  • [PICO VR眼镜]眼动追踪串流Unity开发与使用方法,眼动追踪打包报错问题解决(Eye Tracking/手势跟踪)
  • 使用 LlamaIndex 进行 CRAG 开发用来强化检索增强生成
  • python 将 aac 转为 mp3,保持原有目录结构
  • Spring 全家桶使用教程 —— 后端开发从入门到精通
  • 江协科技STM32学习- P19 TIM编码器接口
  • 深入理解函数【JavaScript】
  • $translatePartialLoader加载失败及解决方式
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 30秒的PHP代码片段(1)数组 - Array
  • Angular 响应式表单 基础例子
  • create-react-app做的留言板
  • Idea+maven+scala构建包并在spark on yarn 运行
  • js对象的深浅拷贝
  • Linux下的乱码问题
  • MySQL几个简单SQL的优化
  • Puppeteer:浏览器控制器
  • 高性能JavaScript阅读简记(三)
  • 技术胖1-4季视频复习— (看视频笔记)
  • 试着探索高并发下的系统架构面貌
  • 问题之ssh中Host key verification failed的解决
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 容器镜像
  • ​浅谈 Linux 中的 core dump 分析方法
  • # dbt source dbt source freshness命令详解
  • # 透过事物看本质的能力怎么培养?
  • #laravel 通过手动安装依赖PHPExcel#
  • #pragma pack(1)
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (十)Flink Table API 和 SQL 基本概念
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (十五)、把自己的镜像推送到 DockerHub
  • (太强大了) - Linux 性能监控、测试、优化工具
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .Net 基于.Net8开发的一个Asp.Net Core Webapi小型易用框架
  • @Bean注解详解
  • @component注解的分类
  • @EnableWebSecurity 注解的用途及适用场景
  • [ A*实现 ] C++,矩阵地图
  • [].slice.call()将类数组转化为真正的数组
  • [BJDCTF2020]EzPHP1
  • [BZOJ1877][SDOI2009]晨跑[最大流+费用流]
  • [C++]: 模板进阶