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

Java|学习|异常

1.异常

1.1 异常

1.1.1 概述

异常:就是程序出现了不正常的情况。

异常体系

Error:严重问题,不需要处理。

Exception:称为异常类,它表示程序本身可以处理的问题。

RuntimeException:在编译器不检查,出现问题后需要我们修改代码。

非RuntimeException:编译器就必须处理,否则程序不能通过编译,更不能正常运行。

Throwable是所有异常类的超类。

1.1.2 JVM的默认处理方案

如果程序出现了问题,我们没有做任何处理,最终JVM会做默认的处理:

把异常的名称、异常原因以及异常出现的位置等信息输出在了控制台。

程序停止执行。

1.1.3 Throwable的成员方法

方法名说明
public String getMessage()返回此throwable的详细消息字符串 原因
public String toString()返回此可抛出的简短描述(包括getMessage的详细消息字符串) 原因+名称
public void printStackTrace()把异常的错误信息输出在控制台(包括toString的描述) 原因+名称+位置

1.1.4 编译时异常和运行时异常的区别

Java中的异常被分为两大类:编译时异常和运行时异常,也被称为受检异常和非受检异常。

所有的RuntimeException类及其子类被称为运行时异常,其他的异常都是编译时异常。

区别:

编译时异常:必须显式处理,否则程序就会发生错误,无法通过编译。

运行时异常:无需显式处理,一般需要修改代码。

1.1.5 方法覆写中的抛出异常范围

覆写后的抛出异常范围不能更宽泛,只能抛出与父类方法相同的异常或者父类抛出异常的子类,或者不抛出异常。

1.2 try…catch 和 throws 的使用

1.2.1 try…catch

格式:

try{可能出现异常的代码;
} catch(异常类名 变量名){异常的处理代码;
}

在 try…catch 结构中可以写多个 catch 语句块,但是处理的异常类型从上到下必须使从子类到父类,或者没有继承关系。适用于 try 下面可能会出现多种异常,且每种异常对应的处理方案不同的情况。

用一个 catch 语句块捕捉多个异常时,可以在 catch 的参数列表里写多个异常类型,用 | 隔开。如果类型中有继承关系,直接写父类。

1.2.2 throws

throws 抛出异常,并不处理异常。如果能够处理问题的话,就用 try…catch 直接处理,否则就用 throws 抛出问题,作为提醒机制。对于别人抛给的异常,要么处理,要么继续往上抛。

1.2.3 try…catch 和 throws 的使用场景

一般在服务端即提供方法处使用 throws 抛出异常,而在客户端即调用方法处使用 try…catch 处理异常。

1.2.4 自动关闭资源

从 JDK1.7 开始,可以把打开某个资源的语句写道 try 的参数列表中,这样当语句块执行完毕后,会自动将打开的资源关闭。

*1.2.5 throws 和 throw 的区别

使用 throw 类似于 return ,执行到 throw 某个对象的时候方法结束执行,并返回异常对象。这样,就可以获取异常对象并且进行操作,比如显示异常信息。

throwsthrow
用在方法声明后面,跟的是异常类名用在方法体内,跟的是异常对象名
表示抛出异常,由该方法的调用者来处理表示抛出异常对象
表示出现异常的一种可能性,并不一定会发生这些异常执行throw一定抛出了某种异常

1.3 finally

1.3.1 finally

finally 是必须执行的语句块,必须和 try 或者 try…catch 搭配使用,只有遇到 System.exit(0) 时才不执行。

1.3.2 try…catch 和 finally 中出现的 return

当 try 或者 catch 语句块中出现 return 时, return 后面的语句会执行,但是不会立刻返回值。在 return 语句执行之后,返回值之前要执行 finally 中的语句。如果 finally 中有 return 语句,就直接在 finally 中执行 return , try…catch 中的 return 后的代码虽然已经执行了,但是不会再返回值。如果 finally 中没有 return 语句,就去将刚才执行了但是还没有返回值的 return 语句进行返回。

比如:
return

1.4 自定义异常(类)

创建一个类,继承一个已有的异常类。一般需要提供无参构造以及有参构造,用于把异常信息传递给父类。

如果自定义异常是运行时异常类,继承 RuntimeException ,否则一般继承 Exception 即可。

public class 异常类名 extends Exception {无参构造带参构造//需要调用父类带参构造
}

*自定义异常可以用来传递消息当作提醒机制。

如果对您有帮助,请点赞关注支持我,谢谢!❤
如有错误或者不足之处,敬请指正!❤

相关文章:

Java|学习|异常

1.异常 1.1 异常 1.1.1 概述 异常:就是程序出现了不正常的情况。 Error:严重问题,不需要处理。 Exception:称为异常类,它表示程序本身可以处理的问题。 RuntimeException:在编译器不检查,出…...

nextjs项目修改启动端口号,以及开发启动后自动打开浏览器

next版本:13.5.4 一、修改端口 在package.json文件当中修改启动命令 "scripts": {"dev": "next dev -p 3100","build": "next build","start": "next start","lint": "ne…...

微服务架构 | 超时管理

INDEX LSA 级别与全年停机时间速查表LSA 级别实战TP 性能超时时间设计原则 LSA 级别与全年停机时间速查表 计算公式:60 * 60 * 24 * 365 * (1-LSA) 31,536,000‬ * (1-LSA) 系统级别LSA级别全年停机时间099.999%5分钟099.99%52分钟199.9%8.8小时299%3.65 天 LSA…...

Qt 样式表大全整理

【QT】史上最全最详细的QSS样式表用法及用例说明_qt样式表使用大全_半醒半醉日复日,花落花开年复年的博客-CSDN博客 QT样式表的使用_qt 设置按下 release hover 按钮样式表_create_right的博客-CSDN博客 QPushButton {border-image: url(:/Start_Stop.png); } QPu…...

k8s-10 cni 网络

k8s通过CNI接口接入其他网络插件来实现网络通讯。目前比较流行的插件有flannel,calico等。 CNI插件存放位置: # cat /etc/cni/net.d/10-flannel.conflist 插件使用的解决方案如下: 虚拟网桥,虚拟网卡,多个容器共用一个虚拟网卡进行通信。多路复用: Mac…...

IDEA中.gitignore配置不生效的解决方案

一、创建项目 二、执行以下Git命令 git rm -r --cached . git add . git commit -m "update .gitignore"...

SparkContext 与 SparkContext 之间的区别是什么

SparkContext 是 Spark 的入口点,它是所有 Spark 应用程序的主要接口,用于创建 RDD、累加器、广播变量等,并管理与 Spark 集群的连接。在一个 Spark 应用程序中只能有一个 SparkContext。 而 SparkSession 是 Spark 2.0 新增的 API&#xff0…...

lv8 嵌入式开发-网络编程开发 17 套接字属性设置

1 基本概念 设置套接字的选项对套接字进行控制除了设置选项外,还可以获取选项选项的概念相当于属性,所以套接字选项也可说是套接字属性有些选项(属性)只可获取,不可设置;有些选项既可设置也可获取 2 选项…...

VulnHub Alice

一、信息收集 发现开发了22、80 2.访问ip,右击查看源代码 发现需要利用X-Forwarded-For 火狐插件:X-Forwarded-For Header 挂上代理后: 出现以下页面: 先注册一个账户,然后再登录 发现有参数进行传参 发现传参&a…...

AUTOSAR组织发布20周年纪念册,东软睿驰NeuSAR列入成功案例

近日,AUTOSAR组织在成立20周年之际发布20周年官方纪念册(20th Anniversary Brochure),记录了AUTOSAR组织从成立到今天的故事、汽车行业当前和未来的发展以及AUTOSAR 伙伴关系和合作在重塑汽车方面的作用。东软睿驰提报的基于AUTOS…...

转行网络安全是否可行?

一、前言 其实很多的IT大佬之前也不是专门学计算机的,都是后期转行的。而且大学学什么专业,对后期的工作真的没有太大关系,这也是现在高校的教育现状。有80%的学生都是通过临时抱佛脚,考前冲刺拿到毕业证书的。下面就带大家详细分…...

netca_crypto.dll找不到怎么修复?详细解决办法和注意事项

当你在使用计算机时,突然出现了一个错误提示:“netca_crypto.dll 找不到”。不知道该如何解决这个问题?其实要解决是非常的简单的,今天我们将为你提供几种修复 netca_crypto.dll 找不到的解决方法和一些注意事项。在深入探讨修复方…...

axios的请求中断和请求重试

请求中断 场景:1、假如一个页面接口太多、或者当前网络太卡顿、这个时候跳往其他路由,当前页面可以做的就是把请求中断掉(优化)2、假如当前接口调取了第一页数据,又调去了第二页的数据,当我们调取第二页数…...

视频怎么压缩?视频太大这样处理变小

在当今时代,视频已经成为了我们日常生活中不可或缺的一部分,然而,视频文件往往非常大,给我们的存储和传输带来了很大的不便,那么,如何有效地压缩视频呢? 一、使用压缩软件 首先我们给大家分享一…...

【MATLAB源码-第48期】基于matlab的16QAM信号盲解调仿真。

操作环境: MATLAB 2022a 1、算法描述 16QAM (16个象限幅度调制) 是一种广泛使用的数字调制技术。在无线和有线通信系统中,为了在固定的带宽内发送更多的信息,高阶调制如16QAM被使用。下面是16QAM盲解调的基本步骤、优缺点及应用场景。 16Q…...

自我介绍思考

1.引导面试官有重点的看你简历 2.在引导部分暗示他我是最适合这个岗位的 面试官在考察什么? a.你的表述是否一致b.考察你的语言表达能力,逻辑思维能力,总结概括能力c.考察你对现场的把控能力d.对时间的把控能力 怎么做? 1.写逐…...

华为eNSP配置专题-VLAN和DHCP的配置

文章目录 华为eNSP配置专题-VLAN和DHCP的配置1、前置环境1.1、宿主机1.2、eNSP模拟器 2、基本环境搭建2.1、基本终端构成和连接 3、VLAN的配置3.1、两台PC先配置静态IP3.2、交换机上配置VLAN 4、接口方式的DHCP的配置4.1、在交换机上开启DHCP4.2、在PC上开启DHCP 5、全局方式的…...

微服务11-Sentinel中的授权规则以及Sentinel服务规则持久化

文章目录 授权规则自定义异常结果规则持久化实现Push模式 授权规则 根据来源名称对请求进行拦截 ——>我们需要解析来源名称(RequestOriginParser默认解析都为default),所以我们要自定义一个实现类(根据请求头解析&#xff0c…...

私有化部署AI智能客服,解放企业成本,提升服务效率

在信息时代,企业面临着服务效率提升和成本压力的双重挑战。作为一个领先品牌,WorkPlus致力于为企业提供私有化部署的AI智能客服解决方案。本文将深入探讨WorkPlus AI智能客服如何帮助企业解放成本、提升服务效率以及打造个性化的卓越客户体验。 AI智能客…...

docker数据卷+挂载(命令讲解+示例)

在容器中管理数据主要有两种方式: 数据卷(Volumes) 、挂载主机目录 (Bind mounts)。 一、数据卷 数据卷是一个可供一个或多个容器使用的特殊目录,可以在容器之间共享和重用。 特点: 对 数据卷 的修改会立马生效对 …...

【webrtc 】FEC 1: 音频RED rfc2198及视频ULPFEC的RED封装

1 参考和引用 M79 代码。 ULPFEC报文构建流程 与大神的分析: WebRTC-FEC协议总结 一致 CrystalShaw 大神的文章 ULPFEC在WebRTC中的实现 WebRTC研究:FEC之RED封装 本文是大神们文章和代码的学习笔记。red封包(rfc2189)1.1 RED(Redundant Coding) 封装 Ulpfec 非均等保护前向纠…...

【Qt】Qt再学习(十七):QThread、QMutex、QTimer

1、QThread 1.1 简介 QThread实现了跨平台的方式来管理线程。一个QThread对象管理一个线程。 1.2 创建线程方法 1)使用QObject::moveToThread()函数将工作对象移动到线程中,该对象的槽函数将在新线程中运行,其它函数还在父线程中运行。 参见本人博客《【Qt】QObject::mo…...

scratch身高统计 2023年9月中国电子学会图形化编程 少儿编程 scratch编程等级考试三级真题和答案解析

目录 scratch身高统计 一、题目要求 1、准备工作 2、功能实现 二、案例分析...

SpringBoot面试题4:Spring Boot 支持哪些日志框架?推荐和默认的日志框架是哪个?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:Spring Boot 支持哪些日志框架?推荐和默认的日志框架是哪个? Spring Boot支持多种日志框架,包括以下几种: Logback:Logback 是一个快速、灵活…...

Git 常用命令汇总

导言 如果你是新手小白&#xff0c;完全不懂git&#xff0c;可以先看这一篇 github 详细教程 本文仅适用于对 git 操作已经有了一定掌握的用户&#xff0c;本文的目的在于将常用命令统一梳理记录&#xff0c;便于查阅。 干货 克隆指定分支&#xff1a;git clone -b <branc…...

最好的开放式蓝牙耳机有哪些?排名前五的开放式耳机五强

越来越多的人开始选择蓝牙耳机作为他们的音频解决方案。蓝牙耳机市场提供了各式各样的选择&#xff0c;不仅有常见的头戴式、耳塞式和半入耳式&#xff0c;还有一种备受欢迎的"开放式耳机"。今天&#xff0c;我将向大家介绍一些优秀的开放式蓝牙耳机款式&#xff0c;…...

docker-machine常用

docker-machine常用 什么是Docker Machine&#xff1f;Docker Machine默认支持的驱动安装kvm驱动 安装和配置Docker Machine环境准备node1安装Dockernode1安装Docker Machine为Docker Machine安装自动补全为Docker Machine准备boot2docker.iso镜像为node2创建machine主机 管理远…...

【Redis】Java客户端使用list命令

lpush/lrange rpush/rpop/lpop blpop/brpop llen...

ubuntu下yolov6 tensorrt模型部署

TensorRT系列教程之 Windows10下yolov8 tensorrt模型加速部署TensorRT系列教程之 Linux下 yolov8 tensorrt模型加速部署TensorRT系列教程之 Linux下 yolov7 tensorrt模型加速部署TensorRT系列教程之 Linux下 yolov6 tensorrt模型加速部署TensorRT系列教程之 Linux下 yolov5 ten…...

k8s查看当前命名空间下所有运行的 pod 对应的镜像

1&#xff0c;查看镜像 kubectl -n xxx get pods | grep Running | awk {print $1} | xargs -r -I {} kubectl -n xxx get pods {} -ojsonpath{.status.containerStatuses[0].image}{"\n"} | sort 2&#xff0c;去重查看 kubectl -n namespace get pods -o jsonp…...

oa办公系统如何使用/seo运营是什么意思

1. 介绍 1.1 定义 外观模式&#xff1a;提供了一个统一的接口&#xff0c;用来访问子系统中的一群接口。外观定义了一个高层接口&#xff0c;让子系统更容易使用。 1.2 结构图 1.3 角色 外观(Facade)角色 &#xff1a; 客户端可以调用这个角色的方法。此角色知晓相关的&#…...

自己做网站怎么做/seo百家论坛

个人需要备份博客数据&#xff0c;决定使用 CentOS 的定时任务&#xff0c;正好将设置定时任务的过程写一下。本文是基于 CentOS 7&#xff0c;其他 Linux 发行版可能略有不同。crontab 适用场景crontab 用于提交和管理执行周期性的任务。例如你需要在每天凌晨 1 点重启服务器&…...

苏州建网站/如何引流推广产品

为发挥区块链在产业变革中的重要作用&#xff0c;促进区块链和经济社会深度融合&#xff0c;加快推动区块链技术应用和产业发展&#xff0c;工信部、中央网信办发布《关于加快推动区块链技术应用和产业发展的指导意见》&#xff08;以下简称《指导意见》&#xff09;&#xff0…...

word里面网站超链接怎么做/百度推广哪家做的最好

不少人买平板电脑的目的就是用来玩吃鸡的&#xff0c;然而有的人发现买回来后玩吃鸡会有一点点卡&#xff0c;这是什么原因呢?主要与配置和设置有关系&#xff0c;因为吃鸡对配置要求还是比较高的&#xff0c;如果选择一些配置较差的低端品牌自然会卡顿&#xff0c;那么它对于…...

视频涉台互联网网站怎么做/搜索引擎优化的英文缩写是什么

报数序列是一个整数序列&#xff0c;按照其中的整数的顺序进行报数&#xff0c;得到下一个数。其前五项如下&#xff1a; 1. 1 2. 11 3. 21 4. 1211 5. 111221 1 被读作 "one 1" ("一个一") , 即 11。 11 被读作 "two 1s&quo…...

做产品网站费用/深圳网络推广解决方案

Div1 534 我可能还太菜了.jpg果然我只是Div 2 选手A &#xff08;这题是Div1吗... 直接构造&#xff1a;竖着放的在第一行和第二行&#xff0c;然后横着放的时候直接放在第三行就行。 #include <cstdio> #include <algorithm> #include <cmath> #include <…...