Java基础之异常(简单易懂)

news2024/11/24 11:51:01

异常

1.JAVA异常体系

(1)Throwable类(表示可抛)是所有异常和错误的超类,两个直接子类为Error和Exception,分别表示错误和异常;其中异常类Exception又分为运行时异常和非运行时异常,这两个异常有很大区别,运行时异常也叫非受检异常;非运行时异常也叫受检异常
(2)Error是程序无法处理的错误,它是由J八VM产生和抛出的,比如OutofMemoryError、ThreadDeath等,这些异常发生时,一般会选择线程终止
(3)Exception是程序本身可以处理的异常,对于这类异常,程序应当尽可能去处理
(4)运行时异常都是RuntimeException类以及其子类异常,比如NullPointerException、ArraylndexOutofBoundsException等,这些异常也是不接受检查异常,程序可以选择处理,也可以选择不处理,这类异常一般由程序逻辑错误引起,程序应该从逻辑角度尽可能避免这类异常的发生
(5)非运行时异常都是除RuntimeException类以及其子类异常之外的类,这些类都属于Exception关,都是要接受检查的异常,比如IOException、sQLException,从程序语法角度是这类异常是必须要进行处理的异常,如果不处理,程序就不能编译通过

 2.异常处理方式以及差别

(1)try catch处理方式,如果try代码块中的代码运行出现错误,那么catch代码块中的代码执行,但不影响后边代码运行

(2)throws处理方式向外抛出异常,让之后一个接收到该异常的方法去处理

3.try-catch代码块
try{
    可能出现异常的代码
}catch(异常类型){
    当产生对应异常类型时,会执行catch中代码
}finally{
    无论如何都会执行的代码
}
4.try-catch的使用

(1)try、catch、finally三个语句均不能单独使用,三者可以组成,try...catch、try..finally、try ...catch....finally三种结构,其中catch可以有多个, finally语句最多一个
(2)try,catch、finally三个代码块中变量的作用域为代码内部,分别独立而不能相互访问,如果要在三个块中使用,则需要把变量定义到这些块之外
(3)多个catch块,最多只会匹配其中一个异常类且只会执行该catch块代码,而不会再执行其他catch块代码,且匹配catch语句的顺序是从上到下,也可能所有的catch块都不执行
(4)先catch子类异常再catch父类异常
(5)finally语句是无论try中有没有发生异常,都会执行的语句块,一般finally是程序提供的一个统一的出口,保证程序转到其他部分继续执行,finally通常做一些清除工作,如关闭文件,关闭资源等

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

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

相关文章

【分享笔记】符尧:预训练、指令微调、对齐、专业化——论大语言模型能力的来源

分享时间:2023.2 目录 模型家族scaling law和涌现能力模型不同阶段pretrainingintruction tuningalignment upper bound和lower bound 模型家族 看模型要从演化家族来看,而不能单独看,很多人认为一些能力并不是RLHF激发出来的,而…

【区块链】智能合约漏洞测试

打开Ganache vscode打开智能合约漏洞工程 合约内容 pragma solidity >0.8.3;contract EtherStore {mapping(address > uint) public balances;function deposit() public payable {balances[msg.sender] msg.value;emit Balance(balances[msg.sender]);}function with…

前端工程化07-常见的包管理工具npm、yarn、cnpm、npx、pnpm

8、包管理工具 8.1、包管理工具概述 npm包管理工具、在安装node的时候这个东西就已经安装过了,通过npm去管理包的时候这个时候回有一个配置文件叫做package.json,他是以json的方式来书写对应的一个配置文件,这个配置文件是可以添加特别多的一些字段的&…

d3dx9_41.dll是个什么东西?d3dx9_41.dll文件丢失的解决方法

随着软件技术的不断发展,电脑用户可能会遇到各种系统错误和问题,其中之一就是动态链接库(DLL)文件的丢失。d3dx9_41.dll文件丢失是一个常见的问题,它通常会在运行依赖于DirectX图形技术的游戏或应用程序时被报告。这个…

MySQL中如何知道数据库表中所有表的字段的排序规则是什么?

查看所有表的字段及其排序规则: 你可以查询 information_schema 数据库中的 COLUMNS 表,来获取所有表的字段及其排序规则。以下是一个示例查询: SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, COLLATION_NAME FROM information_schema.COL…

影视解说5.0版零基础视频课程

课程简介 现在还能做解说吗、不会写解说文案怎么解决、不会配音怎么解决、如何找到合适的素材资源、如何变现…这是很多想做解说的伙伴最关心的几大问题。比如文案,我们推荐一个网站,10分钟搞定一篇文案,配音可以真人配音也可以软件配音。5.…

Windows11的这个地方暴露着你的隐私,把它关掉避免尴尬

前言 现在的电脑真的是越来越智能化!现在有很多小伙伴都是用着Windows11的吧!用习惯了Windows11之后,突然发现它还是挺顺手的。 但不知道你有没有发现,Windows11上面有个地方暴露着你的隐私。这个隐私可能是某个小姐姐的图片&am…

Android 12系统源码_多窗口模式(二)系统实现分屏的功能原理

前言 上一篇我们具体分析了系统处于多窗口模式下,Android应用和多窗口模式相关方法的调用顺序,对于应用如何适配多窗口模式有了一个初步的认识,本篇文章我们将会结合Android12系统源码,具体来梳理一下系统是如何触发多窗口分屏模…

StringMVC

目录 一,MVC定义 二,SpringMVC的基本使用 2.1建立连接 - RequestMapping("/...") ​编辑 2.2请求 1.传递单个参数 2.传递多个参数 3.传递对象 4.参数重命名 5.传递数组 6. 传递集合 7.传递JSON数据 8. 获取url中数据 9. 传递文…

mysql实战——异步复制(gtid复制)

一、搭建前准备 主库 192.168.1.76 从库 192.168.1.78 二、搭建 1、编辑配置文件 主库 server-id76 gtid_modeon enforce_gtid_consistencyon log_binmaster-binlog log-slave-updates1 binlog_formatrow 从库 gtid_modeon enforce_gtid_consistencyon server_id7…

huggingface笔记:LLama 2

1 前提tip 1.1 使用什么数据类型训练模型? Llama2模型是使用bfloat16训练的 上传到Hub的检查点使用torch_dtype float16,这将通过AutoModel API将检查点从torch.float32转换为torch.float16。在线权重的数据类型通常无关紧要,这是因为模型…

基于springboot+vue+Mysql的校园台球厅人员与设备管理系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

在docker中运行SLAM十四讲程序

《十四讲》的示例程序依赖比较多,而且系统有点旧。可以在容器中运行。 拉取镜像 docker pull ddhogan/slambook:v0.1这个docker对应的github:HomeLH/slambook2-docker 拉下来之后,假如是Windows系统,需要使用XLaunch用于提供X11…

Playwright 隐藏浏览器指纹特征:注入stealth.min.js

引言 浏览器指纹技术通过分析用户的浏览器和操作系统信息来识别用户,这包括浏览器类型、版本、插件、屏幕分辨率等。在自动化测试和爬虫操作中,这些信息可能会暴露脚本的身份,导致被目标网站阻止。Playwright是一个跨浏览器的自动化库&#…

Spring Security整合Gitee第三方登录

文章目录 学习链接环境准备1. 搭建基本web应用引入依赖ThirdApp启动类创建index页面application.yml配置访问测试 2. 引入security引入依赖ProjectConfig访问测试 第三方认证简介注册gitee客户端实现1引入依赖application.yml配置文件创建index.html页面启动类InfoControllerPr…

html中table表格的行、列怎么进行合并

在HTML中&#xff0c;使用 <table> 元素来创建表格&#xff0c;而行&#xff08;tr&#xff09;和列&#xff08;td或th&#xff09;的合并可以通过 colspan和 rowspan 属性来实现。这两个属性允许单个表格单元格&#xff08;td或th&#xff09;跨越多个列或行。 colspa…

【FixBug】超级大Json转POJO失败

今天遇到了一个问题&#xff1a;使用Jackson将一个超级大的JSON字符串转换POJO失败&#xff0c;debug看没问题&#xff0c;将JSON字符串粘贴到main方法中测试&#xff0c;提示错误信息如下&#xff1a; 自己猜测是因为字符串超长导致转换时先截断字符串导致JSON格式不正确&…

QT5.15.2及以上版本安装

更新时间&#xff1a;2024-05-20 安装qt5.15以上版本 系统&#xff1a;ubuntu20.04.06 本文安装&#xff1a;linux-5.15.2 下载安装 # 安装编译套件g sudo apt-get install build-essential #安装OpenGL sudo apt-get install libgl1-mesa-dev# 下载qt安装器 https://downl…

安卓 逆向高级-人均瑞数

引言&#xff1a; JS 爬虫&#xff0c;绕不过瑞数这道坎&#xff0c;卡的死死的。一般网上的教程就是补环境什么的&#xff0c;我尝试了&#xff0c;可以但是比较麻烦。 今天说一种&#xff0c;秒过的方式&#xff0c;抗并发。那就是牛逼的RPC&#xff0c;hook JS 技术。 前期…

RedisTemplateAPI:List

文章目录 ⛄介绍⛄List的常见命令有⛄RedisTemplate API❄️❄️添加缓存❄️❄️将List放入缓存❄️❄️设置过期时间(单独设置)❄️❄️获取List缓存全部内容&#xff08;起始索引&#xff0c;结束索引&#xff09;❄️❄️从左或从右弹出一个元素❄️❄️根据索引查询元素❄…