java中异常-异常概述+异常体系结构

一、异常概述

1、什么是异常?

java程序在运行时出现的不正常情况

2、java中提供的默认的异常处理机制

java中对java程序运行时可能会出现的每种不正常情况都创建了一个唯一对应的类,在java程序运行时如果出现不正常情况,java程序就会创建该种情况对应的类的对象并抛出,此类对象中包含了此情况的所有异常信息,包括异常的类型、异常的原因、异常的位置

3、注意:

(1)语法错误不是异常。程序语法错误,编译不通过,不会产生字节码文件,也就不会运行

(2)不处理异常会导致JVM的非正常停止

4、java程序中无法处理的异常

(1)在读取文件时文件被删除

(2)在进行网络通信时网络中断

二、常见异常

1、数组索引越界异常

(1)正常程序

public static void main(String[] args) {// 1、数组索引越界异常int[] a=new int[3];System.out.println(a[2]);System.out.println("你好,中国!");}

(2)异常程序

 public static void main(String[] args) {// 1、数组索引越界异常int[] a=new int[3];System.out.println(a[3]);System.out.println("你好,中国!");}

异常位置之后的程序不会被运行

2、其它常见异常

public static void main(String[] args) {// 1、字符串索引越界异常String s = "abc";System.out.println(s.charAt(3));//java.lang.StringIndexOutOfBoundsException// 2、空指针异常String s1 = null;System.out.println(s1.length());//java.lang.NullPointerException// 3、算数异常int a = 3;System.out.println(a / 0);//ArithmeticException// 4、类型转换异常Object object = "123";Integer s2 = (Integer) object;//java.lang.ClassCastException// 5、数字格式化异常int b = Integer.parseInt("ab"); //java.lang.NumberFormatExceptionSystem.out.println(b);}

三、异常体系结构

1、根类(java.lang.Throwable)

(1)public void printStackTrace() 打印栈中的异常信息

(2)public String getMessage() 获取异常信息

2、子类(java.lang.Error)

Java虚拟机无法解决的严重问题,如内存资源耗尽,一般不编写针对性代码进行处理

(1)StackOverflowError 栈溢出错误(栈内存溢出)

public class Demo {int sum(int num){if(num==1){return 1;}return num+sum(num-1);}public static void main(String[] args) {int res=new Demo().sum(1000000);System.out.println(res);}
}

(2)OutOfMemoryError 没有内存错误(堆内存溢出,简称OOM)

public class Demo {public static void main(String[] args) {List<Integer>list=new ArrayList<>();while(true){list.add(1);}}
}

3、子类(java.lang.Exception)

可以使用java中异常处理机制进行处理的一般问题

4、异常

(1)广义异常:Throwable类和其所有的子类

(2)狭义异常:Exception类

5、异常体系结构图

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

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

相关文章

[minepy][python]minepy所有whl文件下载地址汇总

minepy是一个基于最大信息系数&#xff08;MIC和MINE族&#xff09;的Python库&#xff0c;它提供了对非参数勘探的有力支持。以下是关于minepy的详细介绍&#xff1a; 主要功能与特点&#xff1a; minepy提供了APPROX-MIC、MIC_e、总信息系数&#xff08;TIC&#xff09;和广义…

Java | Leetcode Java题解之第140题单词拆分II

题目&#xff1a; 题解&#xff1a; class Solution {public List<String> wordBreak(String s, List<String> wordDict) {Map<Integer, List<List<String>>> map new HashMap<Integer, List<List<String>>>();List<List…

USB Type-C 和 USB供电数据和电源角色

USB Type-C 连接器生态系统随着现代平台和设备需求的变化而不断发展。 USB Type-C 连接器生态系统可满足现代平台和设备不断变化的需求&#xff0c;并且符合更小、更薄且更轻便的外形设计趋势。此外&#xff0c;针对 Type-C 连接器修改 USB PD 有助于满足高耗电应用的需求。 …

自己做的精灵图制作,图片合成,卓宠,窗口置顶,磁力链下载等工具软件

欢迎使用和提bug&#xff0c;才v1.0.2&#xff0c;有新奇的自己需要的功能可以提给我&#xff0c;我看看能不能做。 网站地址 github

Qt对二进制文件进行加密及解密操作

在工作中可能会做一些二进制文件加密及解密的任务&#xff0c;比如说仪器的时序指令bin文件。 #include <iostream> #include <fstream> #include <vector> #include <QCryptographicHash> #include <QFile> #include <QDataStream> #inc…

Next.js初始化和一些配置

Next.js初始化和一些配置 Next.js初始化和一些配置初始化配置路径别名跨域问题图片跨域问题 Next.js初始化和一些配置 我的版本是14.2.3 初始化 配置 路径别名 跨域问题 改为服务端组件 把发起跨域请求的组件顶层的use client删掉使用后端接口转发 在Next.js自定义一个接…

数据总线、位扩展、字长

数据总线&#xff08;Data Bus&#xff09; 定义 数据总线是计算机系统中的一组并行信号线&#xff0c;用于在计算机内部传输数据。这些数据可以在中央处理器&#xff08;CPU&#xff09;、内存和输入/输出设备之间传输。 作用 数据传输&#xff1a;数据总线负责在计算机各…

c++【入门】求圆环的面积

限制 时间限制 : 1 秒 内存限制 : 128 MB 题目 如下图所示的圆环铁片&#xff0c;中间是空心的&#xff0c;已知圆环外圆的半径是r1厘米&#xff08;如&#xff1a;10cm&#xff09;&#xff0c;内圆半径是r2厘米&#xff08;如&#xff1a;6cm&#xff09;&#xff0c;请编…

心链13---主页切换功能 + loading特效 + 导航栏完善 + 队伍页接口修改

心链 — 伙伴匹配系统 直接取出所有用户&#xff0c;依次和当前用户计算分数&#xff0c;取 TOP N&#xff08;54 秒&#xff09; 优化方法&#xff1a; 切忌不要在数据量大的时候循环输出日志&#xff08;取消掉日志后 20 秒&#xff09;Map 存了所有的分数信息&#xff0c;占…

C++ | Leetcode C++题解之第140题单词拆分II

题目&#xff1a; 题解&#xff1a; class Solution { private:unordered_map<int, vector<string>> ans;unordered_set<string> wordSet;public:vector<string> wordBreak(string s, vector<string>& wordDict) {wordSet unordered_set(w…

SpringBoot+Vue网上购物商城系统(前后端分离)

技术栈 JavaSpringBootMavenMySQLMyBatisVueShiroElement-UI 系统角色对应功能 用户商家管理员 系统功能截图

docker部署redis实践

1.拉取redis镜像 # 拉取镜像 sudo docker pull redis2.创建映射持久化目录 # 创建目录 sudo mkdir -p $PWD/redis/{conf,data}3. 运行redis 容器&#xff0c;查看当前redis 版本号 # 运行 sudo docker run --name redis -d -p 6379:6379 redis # 查看版本号 sudo docker ex…

java异常处理知识点总结

一.前提知识 首先当运行出错的时候&#xff0c;有两种情况&#xff0c;一种叫做“错误”&#xff0c;另一种叫做“异常”。错误指的是运行过程中遇到了硬件或操作系统出错&#xff0c;这种情况程序员是没办法处理的&#xff0c;因为这是硬件和系统的问题&#xff0c;不能靠代码…

React Native中集成ArcGIS以显示地图、渲染自定义图层和获取地理信息数据

在您的数据采集上传的应用中集成ArcGIS以显示地图、渲染自定义图层和获取地理信息数据是一项常见需求。下面是如何实现这些功能的详细指南&#xff0c;包括具体步骤和示例代码。 1. 显示地图 原生开发 Android&#xff1a; 使用ArcGIS Android SDK。您需要在AndroidManifest…

tile-join的详细解释和使用说明

tile-join是Tippecanoe工具集中的一个实用命令&#xff0c;主要用于合并多个MBTiles文件&#xff0c;或者将属性数据添加到已有的MBTiles文件中。它可以处理大量的GeoJSON、Shapefile和MBTiles数据&#xff0c;并将它们合并成一个新的MBTiles文件。这对于需要结合多个数据源或者…

使用GPT-soVITS再4060下2小时训练声音模型以及处理断句带来的声音模糊问题

B站UP主视频 感谢UP主“白菜工厂1145号员工”的“熟肉”&#xff0c;我这篇笔记就不展示整一个训练和推理流程&#xff0c;重点写的4060该注意的一些事项。如何解决断句模糊的问题&#xff0c;在本篇笔记的最末尾。 相关连接&#xff1a; 原项目github UP主的说明文档 1、训…

如果一个列表有100000个数据,这个该怎么进行展示?

当列表包含大量数据&#xff08;如100,000个数据项&#xff09;时&#xff0c;直接渲染所有数据到DOM可能会导致性能问题&#xff0c;因为浏览器需要处理大量的DOM节点。为了优化这种情况&#xff0c;有几种常见的策略可以使用&#xff1a; 分页&#xff08;Pagination&#xf…

Python中的异常处理:try-except-finally详解与自定义异常类

Python中的异常处理&#xff1a;try-except-finally详解与自定义异常类 在Python编程中&#xff0c;异常处理是确保程序健壮性和可靠性的重要部分。当程序遇到无法预料的错误时&#xff0c;异常处理机制能够防止程序崩溃&#xff0c;并允许我们采取适当的措施来解决问题。本文…

Linux的目录结构介绍和环境变量的设置

目录 前言一、系统环境二、Linux的目录结构2.1 Linux目录结构介绍2.2 Linux文件的路径描述2.2.1 绝对路径2.2.2 相对路径2.2.3 特殊的路径符 三、Linux的环境变量设置3.1 环境变量PATH3.2 关于$符的使用3.3 环境变量的设置 总结 前言 本篇文章介绍Linux的目录结构和环境变量的…

相同的树-力扣

这道题目与堆成二叉树题目很相似&#xff0c;对称二叉树是每次传入的节点组合是 《左子树的左节点 和 右子树的 右节点》 《左子树的右节点 和 右子树的左节点》&#xff0c; 而这道题就更加简单&#xff0c;传入两棵树的左节点和右节点即可。 /*** Definition for a binary t…