java基础_异常总结详解

news2024/11/25 6:49:25

1 列举一些列举常见的运行时异常

运行时异常都是 RuntimeException 子类异常

NullPointerException - 空指针异常
ClassCastException - 类转换异常
IndexOutOfBoundsException - 下标越界异常
ArithmeticException - 计算异常
IllegalArgumentException - 非法参数异常
NumberFormatException - 数字格式异常
UnsupportedOperationException 操作不支持异常
ArrayStoreException - 数据存储异常,操作数组时类型不一致
BufferOverflowException - IO 操作时出现的缓冲区上溢异常
NoSuchElementException - 元素不存在异常
InputMismatchException - 输入类型不匹配异常

2 Java中如何进行异常处理?

throws、throw、try、catch、finally分别如何使用?

把各种不同的异常进行分类,每个异常都是一个对象,是 Throwable 或其子类的实例
一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用对象的方法可以捕获到这个异常并进行处理,Java 中的异常处理通过 5 个关键词实现:throw、throws、try、catch 和 finally
定义方法时,可以使用 throws 关键字抛出异常,方法体内使用 throw 抛出异常,使用 try 执行一段代码,当出现异常后,停止后续代码的执行,跳至 catch 语句块,使用 catch 来捕获指定的异常,并进行处理finally 语句块表示的语义是在 try、catch 语句块执行结束后,最后一定会被执行

3 运行时异常与受检异常有何异同

异常表示程序运行过程中可能出现的非正常状态
运行时异常,表示程序代码在运行时发生的异常,程序代码设计的合理,这类异常不会发生
受检异常跟程序运行的上下文环境有关,即使程序设计无误,仍然可能因使用的问题而引发
Java编译器要求方法必须声明抛出可能发生未被捕获的受检异常,不要求必须声明抛出运行时异常

4 Java中异常处理机制

Java 异常的结构
Throwable
–Error:是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题

–Exception:
–RuntimeException:运行时异常,编译通过了,但运行时出现的异常
–非 RuntimeException:编译时(受检)异常,编译器检测到某段代码可能会发生某些问题,需要程序员提前给代码做出错误的解决方案,否则编译不通过

异常产生的原理

java 对异常默认的处理方式,是将问题抛出给上一级
抛出之前,java 会根据错误产生的异常类,创建出该类的对象,底层并通过 throw 关键字将异常抛出给上一级,不断向上抛出,直到抛给了JVM 虚拟机,虚拟机拿到异常之后,就会将错误的原因和所在的位置,打印在控制台

异常的处理方式
try catch 处理:自己将问题处理掉,不会影响到后续代码的继续执行
throw 抛出:问题自己无法处理,可以通过 throw 关键字,将异常对象抛出给调用者。如果抛出的对象是 RuntimeException 或 Error,则无需在方法上 throws 声明;其他异常,方法上面必须进行 throws 的声明,告知调用者此方法存在异常

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

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

相关文章

C - Separated Lunch

题目链接: C - Separated Lunch (atcoder.jp) 题目描述: 大致意思是:有n个人,让你把他们分为两个组,然后分完后的这两个组的最大值最小为多少? 数据范围: 样例输入: 5 2 3 5 10 12 样例输出:…

二分查找算法——在排序数组中查找元素的第一个和最后一个位置

1.题目解析 题目来源:在排序数组中查找元素的第一个和最后一个位置——力扣 测试用例 2.算法原理 查找左端点 此时根据二段性,需要将数组分为大于target与小于target两部分,然后取出中点位置判断此时中点位置的值与target的大小关系&#xf…

SpringBoot校园资料分享平台:设计与实现

3系统分析 3.1可行性分析 通过对本校园资料分享平台实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本校园资料分享平台采用JAVA作为开发语言,Sprin…

基于Springboot+Vue的计算中心共享平台(含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统中…

vSAN02:容错、存储策略、文件服务、快照与备份、iSCSI

目录 vSAN容错条带化存储策略1. 创建新策略2. 应用存储策略 vSAN文件服务文件服务快照与备份 vSAN iSCSI目标服务 vSAN容错 FTT:Fault to Tolerance 允许故障数 故障域:每一台vSAN主机是一个故障域 - 假设3台超融合(3计算1存储)&…

2024年最新版本神马TV8.5影视APP源码 293TV影视点播系统源码搭建教程 神马TV8.2加强版反编译教程 保姆级小白可搭建 完整版本视频教程

2024年最新版的神马TV影视APP源码,版本号8.5,提供了前所未有的定制化选项和高级功能。用户可以轻松更换应用的包名和名称,确保品牌个性化。此外,该应用采用了动态域名加密技术,增强了数据传输的安全性。它支持自动切换…

【可视化大屏】将柱状图引入到html页面中

到这里还是用的死数据&#xff0c;先将柱状图引入html页面测试一下 根据上一步echarts的使用步骤&#xff0c;引入echarts.js后需要初始化一个实例对象&#xff0c;所以新建一个index.js文件来进行创建实例化对象和配置数据信息等。 //在index.html引入<script src"j…

Redis:zset类型

Redis&#xff1a;zset类型 zset命令ZADDZCARDZCOUNTZRANGEZREVRANGEZRANGEBYSCOREZREVRANGEBYSCOREZPOPMAXBZPOPMAXZPOPMINBZPOPMINZRANKZREVRANKZSCOREZREMZREMRANGEBYRANKZREMRANGEBYSCOREZINCRBY 集合间操作ZINRERSTOREZUNIONSTORE 内部编码ziplistskiplist 在Redis中&…

文心一言 VS 讯飞星火 VS chatgpt (362)-- 算法导论24.3 4题

四、Gaedel 教授写了一个程序&#xff0c;他声称该程序实现了 Dijkstra 算法。对于每个结点 v ∈ V v∈V v∈V,该程序生成值 u . d u.d u.d 和 v . π v.π v.π 。请给出一个时间复杂度为 O ( V E ) O(VE) O(VE) 的算法来检查教授所编写程序的输出。该算法应该判断每个结…

安卓AI女友项目之安卓AI虚拟数字人整合开发

第9章 安卓AI虚拟数字人整合开发 在人工智能技术的推动下&#xff0c;创建具有交互能力的虚拟数字人已成为现实。本章将指导你如何在安卓平台上整合开发一个AI虚拟数字人应用&#xff0c;包括文字与语音的切换、按住说话输入、与ChatGPT进行文字及语音对话、滑动选择不同虚拟人…

算法篇1:双指针思想的运用(1)--C++

一.算法解析 双指针&#xff0c;顾名思义就是两个指针&#xff0c;常见的算法中&#xff0c;我们可以看到两种&#xff1a; 1.对撞指针&#xff1a;一般用于顺序结构&#xff0c;也称为左右指针。 对撞指针从两端向中间移动。一个指针从最左端开始&#xff0c;另一个从最右端…

Tkinter打包成EXE安装文件

打包成 .exe可执行文件 1. 安装PyInstaller&#xff0c;命令如下&#xff1a; pip install pyinstaller2. 编写你的Tkinter应用程序&#xff1a; 创建一个Python文件&#xff0c;例如app.py&#xff0c;并写入你的Tkinter代码。 3. 在 app.py 文件所在的目录使用PyInstaller…

系统架构设计师⑤:系统性能

系统架构设计师⑤&#xff1a;系统性能 系统的性能指标主要分为2个方面&#xff1a;硬件和软件。 性能指标计算 关键词描述&#xff1a; ①平均每条指令的平均时钟周期个数(CPl&#xff0c;clockperinstruction) ②每(时钟)周期运行指令条数(IPC&#xff0c;instructionper…

OpenCV透视变换

#透视变换 import cv2 import numpy as np import matplotlib.pyplot as pltimg cv2.imread(coins.jpg,1)imgInfo img.shape height imgInfo[0] width imgInfo[1] #src 4->dst 4 (左上角 左下角 右上角 右下角) matSrc np.float32([[200,100],[200,400],[600,100],[wid…

数据驱动投资:AI在股票市场的应用

当ChatGPT首次亮相时&#xff0c;其卓越的语言处理能力立刻引起了许多行业的广泛关注&#xff0c;投资界也不例外。关于ChatGPT是否能应用于投资决策的问题&#xff0c;迅速成为热门讨论的焦点。 近期&#xff0c;加拿大多伦多大学和印度孟买理工学院的研究人员联合开展了一项…

Mysql:数据库和表增删查改基本语句

一、数据库操作 1&#xff09;、数据库创建 创建数据库本质就是创建一个目录&#xff08;ubuntu&#xff0c;创建的目录文件存放在/var/lib/mysql&#xff09;&#xff1b;后续创建表本质就是在该目录下创建文件&#xff08;不同存储引擎&#xff0c;会创建的文件数目是不同的…

Linux进程概念2

前言 1. Linux真实的调度算法 首先cpu中有一个叫做runqueue的东西&#xff0c;这个东西就是去弄进程的调度的&#xff0c;里面有很多东西&#xff0c;这里我们就写这些了 其中task_struct*这个数组指向的是140个元素&#xff0c;其中0~99就是系统默认的进程&#xff0c;后面的…

ARM assembly: lesson 11

在之前&#xff0c;我们提到&#xff0c;当函数的参数小于等于4个时&#xff0c;我们会把它存放于寄存器中&#xff0c;但是如果函数参数大于4个&#xff0c;我们就需要通过stack去进行参数的存储,这毫无疑问&#xff0c;将增加代码操作的复杂性&#xff0c;因为我们需要对于栈…

国外透明代理IP解析:匿名性的全貌

网络世界中&#xff0c;透明代理IP是一个广受关注的话题。究竟什么国外透明代理IP&#xff1f;以及它的匿名性如何&#xff1f;本文将深入解析透明代理IP的定义及其匿名性&#xff0c;为您呈现一个清晰的认识。 1. 概念 透明代理IP是指在进行网络请求时&#xff0c;客户端&am…

(数据结构与算法)哈希表

哈希表把他当成一个key-values表