【前端学java】Java中的异常处理(15)完结
往期回顾:
- 【前端学java】JAVA开发的依赖安装与环境配置 (0)
- 【前端学java】java的基础语法(1)
- 【前端学java】JAVA中的packge与import(2)
- 【前端学java】面向对象编程基础-类的使用 (3)
- 【前端学java】类中的访问权限详解,通俗易懂(4)
- 【前端学java】java中final修饰符(5)
- 【前端学java】全网最通俗易懂的JAVA抽象概念(6)
- 【前端学java】Java中的接口和枚举概念(7)
- 【前端学java】java中的Object类(8)
- 【前端学java】java 中的数组(9)
- 【前端学java】java中的字符串操作(10)
- 【前端学java】java中的包装类(11)
- 【前端学java】java中的日期操作(12)
- 【前端学java】语法练习-工具类的封装(13)
- 【前端学java】复习巩固-Java中的对象比较(14)
常见的错误类型
编译时错误
这类错误在代码编写阶段产生,主要包括语法错误、类型错误、变量未声明等。这类错误在程序编译时就会被检测出来,如下面代码的类型转换错误

错误(Errors)
通常是Java虚拟机无法恢复的严重问题,如OutOfMemoryError、StackOverflowError等。如下图递归没有跳出逻辑导致的StackOverflowError报错

异常
运行时异常RuntimeException
这是未经检查的异常,Java编译器不会强制要求程序员处理这些异常(运行代码时才会出现异常提示)。

在上面的例子中,我们创建了一个包含3个元素的整数数组,然后尝试访问数组的第4个元素。由于数组长度只有3,所以这会抛出一个ArrayIndexOutOfBoundsException运行时异常。
检查型异常Checked Exceptions
这是受检查的异常,Java编译器会强制要求程序员处理这些异常。
在上面的代码中,我们尝试打开一个名为"example.txt"的文件并读取它。由于这个文件可能不存在或无法读取,因此new FileReader报错,程序无法执行。
这个时候需要通过try catch捕获异常,和前端一样

异常处理的基本语法
前端中的异常处理方法
前端中异常处理基本上使用try-catch 语句就够了,Promise 链式调用中使用.catch 方法也可以捕获异常,这两种是常用的,都很简单。
后端中的异常处理方法
Java中的异常处理语法主要包括try-catch语句和throw语句。
try-catch语句
public static void main(String[] args) { try { String str = "Hello World"; int length = Integer.parseInt(str); // 传递了一个字符串类型的参数,应该使用String.length()方法获取长度 } catch (NumberFormatException e) { // 如果传递的参数不是一个有效的整数,则会抛出NumberFormatException异常 } catch (IllegalArgumentException e) { // 如果传递了一个不合法或不适当的参数,则会抛出IllegalArgumentException异常 } finally { // 无论是否发生异常,都将执行的代码块 }
}
注:这里我们只做简单的语法使用展示,具体catch中的错误类型我们不必纠结深入学习,遇到具体的问题时巩固学习即可。
throw语句
throw语句用于手动抛出异常。当程序遇到一个异常条件时,可以使用throw语句抛出一个异常对象。
public class Main { public static void main(String[] args) { int[] numbers = {2, 4, 6, 8}; // 遍历数组并查找元素 for (int i = 0; i < numbers.length; i++) { if (numbers[i] == 5) { // 手动抛出异常 throw new IllegalArgumentException("数组中不存在元素 5"); } } }
}
自定义异常
在Java中,我们可以创建自定义异常,自定义异常通常从Exception或其子类派生(简单了解即可)。
// 定义一个新的异常类,继承自Exception类
public class MyException extends Exception { public MyException() { super(); } public MyException(String message) { super(message); } public MyException(String message, Throwable cause) { super(message, cause); } public MyException(Throwable cause) { super(cause); }
}
现在,我们可以在代码中抛出这个新的异常:
public class Test { public static void main(String[] args) { try { // 在这里抛出我们的自定义异常 throw new MyException("这是我的异常"); } catch (MyException e) { e.printStackTrace(); } }
}
相关文章:
【前端学java】Java中的异常处理(15)完结
往期回顾: 【前端学java】JAVA开发的依赖安装与环境配置 (0)【前端学java】java的基础语法(1)【前端学java】JAVA中的packge与import(2)【前端学java】面向对象编程基础-类的使用 (…...
深入理解MySQL存储引擎、InnoDB与MyISAM的比较以及事务处理机制
介绍 MySQL是一款强大而灵活的关系型数据库管理系统,它支持多种存储引擎,每个引擎都有其独特的特点和适用场景。在本篇博客中,我们将深入探讨MySQL存储引擎的种类、InnoDB与MyISAM的区别,以及事务的概念及其在MySQL中的实现方式。…...
webpack 中,filename 和 chunkFilename 的区别
filename filename 是一个很常见的配置,就是对应于 entry 里面的输入文件,经过webpack打包后输出文件的文件名。比如说经过下面的配置,生成出来的文件名为 index.min.js。 chunkFilename chunkFilename 指未被列在 entry 中,却…...
gitlab 实战
一.安装依赖 yum install -y curl policycoreutils-python openssh-server perl 二.安装gitlab yum install gitlab-jh-16.0.3-jh.0.el7.x86_64.rpm 三.修改下面的 vim /etc/gitlab/gitlab.rbexternal_url http://192.168.249.156 四.初始化 gitlab-ctl reconfigure 五.查看状…...
openGauss学习笔记-128 openGauss 数据库管理-设置透明数据加密(TDE)
文章目录 openGauss学习笔记-128 openGauss 数据库管理-设置透明数据加密(TDE)128.1 概述128.2 前提条件128.3 背景信息128.4 密钥管理机制128.5 表级加密方案128.6 创建加密表128.7 切换加密表加密开关128.8 对加密表进行密钥轮转 openGauss学习笔记-12…...
Redis从入门到精通(三)-高阶篇
文章目录 0. 前言[【高阶篇】3.1 Redis协议(RESP )详解](https://blog.csdn.net/wangshuai6707/article/details/132742584)[【高阶篇】3.3 Redis之底层数据结构简单动态字符串(SDS)详解](https://blog.csdn.net/wangshuai6707/article/details/131101404)[【高阶篇】3.4 Redis…...
线性表--队列-1
文章目录 主要内容一.队列基础练习题1.用链式存储方式的队列进行删除操作时需要 ( D ).代码如下(示例): 2.若以1,2,3,4作为双端队列的输入序列,则既不能由输入受限的双端队列得到,又不能由输出受限的双端队列得到的输出序列是( C …...
【开题报告】基于uni-app的汽车租赁app的设计与实现
1.项目背景及意义 项目背景: 随着人们生活水平的提高,汽车租赁服务在城市中变得越来越普及。传统的租车方式存在一些问题,比如租车流程繁琐、费用不透明、选择有限等。因此,开发一款基于uni-app的汽车租赁app成为了满足用户需求…...
Java实现围棋算法
围棋是一种源自中国的棋类游戏,也是世界上最古老、最复杂的棋类游戏之一。该游戏由黑白两方交替放置棋子在棋盘上进行,目的是将自己的棋子占据更多的空间,并将对手的棋子围死或吃掉,最终获得胜利。围棋不仅是一种游戏,…...
python -opencv 边缘检测
python -opencv 边缘检测 边缘检测步骤: 第一步:读取图像为灰度图 第二步:进行二值化处理 第三步:使用cv2.findContours对二值化图像提取轮廓 第三步:将轮廓绘制到图中 代码如下: from ctypes.wintypes import SIZ…...
Hadoop-- hdfs
1、HDFS中的三个进程:NameNode(NN)、DataNode(DN)、SecondNameNode(SNN) 2、NameNode(NN) 1、作用: 1、接收客户端的一个读、写的服务,在namenode上存储了数据文件和datanode的映射的关系。 …...
《论文阅读》CAB:认知、情感和行为的共情对话生成 DASFAA 2023
《论文阅读》CAB:认知、情感和行为的共情对话生成 前言摘要相关知识CVAE 条件变分自编码器最大最小归一化模型架构1.获取 Representation2.Prior Network and Recognition Network (Affection)3.Knowledge Acquisition and Fusion (Cognition)4.Dialogue Act Predictor and Re…...
审计dvwa高难度命令执行漏洞的代码,编写实例说明如下函数的用法
审计dvwa高难度命令执行漏洞的代码 ,编写实例说明如下函数的用法 代码: <?phpif( isset( $_POST[ Submit ] ) ) {// Get input$target trim($_REQUEST[ ip ]);// Set blacklist$substitutions array(& > ,; > ,| > ,- > ,$ …...
国科大数据挖掘期末复习——聚类分析
聚类分析 将物理或抽象对象的集合分组成为由类似的对象组成的多个类的过程被称为聚类。由聚类所生 成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异。 聚类属于无监督学习(unsupervised learning&…...
【经验之谈·高频PCB电路设计常见的66个问题】
文章目录 1、如何选择PCB 板材?2、如何避免高频干扰?3、在高速设计中,如何解决信号的完整性问题?4、差分布线方式是如何实现的?5、对于只有一个输出端的时钟信号线,如何实现差分布线?6、接收端差…...
科大讯飞 vue.js 语音听写流式实现 全网首发
组件下载 还是最近的需求,页面表单输入元素过多,需要实现语音识别来由用户通过朗读的方式向表单中填写数据,尽量快的、高效的完成表单数据采集及输入。 国内科大讯飞在语音识别方面的建树还是有目共睹,于是还是选择了科大讯飞的平…...
局域网文件共享神器:Landrop
文章目录 前言解决方案Landrop软件界面手机打开效果 软件操作 前言 平常为了方便传文件,我们都是使用微信或者QQ等聊天软件,互传文件。这样传输有两个问题: 必须登录微信或者QQ聊天软件。手机传电脑还有网页版微信,电脑传手机比…...
如何使用Docker部署Apache+Superset数据平台并远程访问?
大数据可视化BI分析工具Apache Superset实现公网远程访问 文章目录 大数据可视化BI分析工具Apache Superset实现公网远程访问前言1. 使用Docker部署Apache Superset1.1 第一步安装docker 、docker compose1.2 克隆superset代码到本地并使用docker compose启动 2. 安装cpolar内网…...
【阿里云】图像识别 摄像模块 语音模块
USB 摄像头模块测试及配置 一、首先将 USB 摄像头插入到 Orange Pi 开发板的 USB 接口中二、然后通过 lsmod 命令可以看到内核自动加载了下面的模块三、通过 v4l2-ctl 命令可以看到 USB 摄像头的设备节点信息为 /dev/video0四、使用 fswebcam 测试 USB 摄像头五、使用 motion …...
一文读懂 Linux 网络 IO 模型
文章目录 1.从一个问题说起2.多进程模型3.多线程模型4.I/O 多路复用5.select、poll、epoll 的区别?5.1 select5.2 poll5.3 epoll5.4 两种事件触发模式 参考文献 1.从一个问题说起 互联网发展历史上,曾经有一个著名的问题:C10K 问题。 C 是 …...
从GAN到Transformer:生成式AI核心技术演进与实战指南
1. 项目概述:一场从“模仿”到“创造”的范式革命如果你在2014年问我,AI能做什么,我可能会跟你聊图像分类、语音识别,或者下围棋的AlphaGo。但今天,当“生成式AI”这个词席卷全球时,我们谈论的已经是AI写诗…...
CANN一维最近邻上采样算子
aclnnUpsampleNearest1dV2 【免费下载链接】ops-cv 本项目是CANN提供的图像处理、目标检测相关的算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-cv 📄 查看源码 产品支持情况 产品是否支持Ascend 950PR/Ascend 950…...
CANN/cannbot-skills Attention-Only模板
Attention-Only Scope 模板 【免费下载链接】cannbot-skills CANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。 项目地址: https://gitcode.com/cann/cannbot-skills 本模板提供仅将 Attention 模块纳入 Super…...
核心概念扫盲:Pawn、PlayerController 和 GameMode
📌 核心概念扫盲:Pawn、PlayerController 和 GameMode 在写避坑指南前,先用最通俗的大白话把这三个“铁三角”搞清楚,否则后面配置起来会非常迷糊: Pawn(棋子/角色):游戏世界里的“身体”。它可以是一个行走的战士(Character 是 Pawn 的子类,专门做人形角色),也可…...
Arm Neoverse V3AE性能监控架构与PMU寄存器详解
1. Arm Neoverse V3AE性能监控架构深度解析在处理器微架构设计中,性能监控单元(PMU)如同汽车的仪表盘,为开发人员提供观察硬件行为的直接窗口。Arm Neoverse V3AE作为面向基础设施的高性能核心,其PMU实现包含一组精密的…...
Windows 11安装完全指南:使用MediaCreationTool.bat轻松绕过硬件限制
Windows 11安装完全指南:使用MediaCreationTool.bat轻松绕过硬件限制 【免费下载链接】MediaCreationTool.bat Universal MCT wrapper script for all Windows 10/11 versions from 1507 to 21H2! 项目地址: https://gitcode.com/gh_mirrors/me/MediaCreationTool…...
3秒解锁网盘资源:baidupankey智能提取码查询工具完全指南
3秒解锁网盘资源:baidupankey智能提取码查询工具完全指南 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 还在为百度网盘分享链接的提取码而烦恼吗?每次遇到需要输入提取码的资源,都需要在多…...
测试团队能力定级模型实战评测
① 主流组织架构模型适配性分析 在着手构建测试团队的能力定级模型之前,我们首先得看清脚下的“地基”,也就是团队所处的组织架构。不同的组织形态,对人才的需求密度和能力分布有着截然不同的要求。这就好比盖房子,地基是圆形的,你很难强行盖出一座方正的摩天大楼。 目前…...
C语言完美演绎8-17
/* 范例:8-17 */#include <stdio.h>void func(char *i,int j){printf("%d 以%s方式来调用函数指针\n",j,i);}void main(void){void (*pfun)(char *a, int b); /* 定义pfun函数指针 */pfunfunc; /* 将函数func()的地址赋值给函数指针pfun */(*pf…...
40款办公助手软件分享
人机协作,大模型:deepseek 仅供参考,请仔细甄别。 文档与PDF处理(2款) 序号名称主要功能官网免费说明平台1PDF24 CreatorPDF 创建、合并、拆分、压缩、转换https://www.pdf24.org/完全免费,无水印Windows2JOPDFPDF …...
