JAVA笔记十六

十六、异常Exception

1.概念

异常:非正常情况,包括空的引用、数组下标越界、内存溢出等

Java提供了异常对象描述这类异常情况。

Java提供了异常机制来进行处理,通过异常机制来处理程序运行期间出现的错误可以更好地提升程序的健壮性

2.异常处理基本流程

(1)try{

}catch(......){

}

异常处理过程:

·当执行过程中遇到异常时,系统会抛出异常(对象)

·catch()块捕获异常并处理

·没有被捕获的异常最终都将由默认处理程序进行处理

注意:

·由try保护的语句必须使用{}括起来,catch也不能省略{}

·try、catch不能单独使用

·try块发生异常之后直接进入catch块,执行完catch块后也不会返回到try块

(2)try{

}catch(......){

}catch(......){

}

注意:

·try及其catch语句构成了一个单元catch子句的作用域被限制在由之前try语句指定的那些语句

·执行了一条catch语句之后,会忽略其他catch语句,并继续执行try/catch块后面的代码

·当使用多条catch语句时,要重点记住异常子类必需位于它的所有超类之前

(3)try{

}finally{

}

注意:

·不管是否有异常抛出,都会执行finally块

·最多只能有一个finally块

·每个try语句至少需要有一个catch子句或一个finally子句

3.嵌套的try语句

一个try语句可以位于另一个try语句中

4.异常类型

(1)异常继承体系

(2)异常分类

·运行时异常(unchecked异常):所有RuntimeException类及其子类的实例

不要求必须进行异常捕获处理或抛出声明

·非运行时异常(checked异常)(编译异常):运行时异常之外的异常

必须显式处理异常

处理方式:

·使用try...catch块来捕获异常,然后在对应的块来修复异常

·定义方法时抛出异常

(3)常用异常

java.lang包中定义的运行时异常

异 常

含 义

ArithmeticException

算术错误,例如除零

ArrayIndexOutOfBoundsException

数组索引越界

ArrayStoreException

使用不兼容的类型为数组元素赋值

ClassCastException

无效的转换

EnumConstantNotPresentException

试图使用未定义的枚举值

IllegalArgumentException

使用非法实参调用方法

IllegalMonitorStateException

非法的监视操作,例如等待未锁定的线程

IllegalStateException

环境或应用程序处于不正确的状态

IllegalThreadStateException

请求的操作与当前线程状态不兼容

IndexOutOfBoundsException

某些类型的索引越界

NegativeArraySizeException

使用负数长度创建数组

NullPointerException

非法使用空引用

NumberFromatException

字符串到数字格式的无效转换

SecurityException

试图违反安全性

StringIndexOutOfBounds

试图在字符串边界之外进行索引

TypeNotPresentExcepton

未找到类型

UnsupportedOpetationException

遇到一个不支持的操作

java.lang包中定义的非运行时异常

异 常

含 义

ClassNotFoundException

未找到类

CloneNotSupportedException

试图复制没有实现Cloneable接口的对象

IllegalAccessException

对类的访问被拒绝

InstantiationException

试图为抽象类或接口创建对象

InterruptedException

一个线程被另一个线程中断

NoSuchFieldException

请求的字段不存在

NoSuchMethodException

请求的方法不存在

ReflectiveOperationException

与反射相关的异常的子类(该异常是由JDK 7新增的)

常用的非运行时异常

异 常

含 义

IOException

输入输出异常

FileNotFoundException

文件不存在异常

SQLException

SQL异常

5.throw

使用throw语句显式地抛出一个异常在throw语句之后的执行流会立即停止,所有后续语句都不会执行然后检查最近的try块,查看是否存在和异常类型相匹配的catch语句

6.throws

如果方法可能引发一个Checked异常,则必须在方法声明中提供throws子句列出了方法可能抛出的异常类型

throw与throws的区别:

·throw抛出异常对象,应用在代码块内

·throws声明可能抛出的异常类型,在定义方法后面

·如果方法内使用throw抛出Checked异常对象,又没有进行try catch处理,则该方法定义同时需要使用throws指明抛出异常类型

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

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

相关文章

波特率和比特率的区别联系【理解】

波特率(Baud rate):表示单位时间内载波调制状态变化的次数 ,单位为波特(Baud); 【值得注意的是】单位“波特”本身就已经是代表每秒的调制数,不能用“波特每秒”(Baud per second)为…

MySQL练手 --- 1141. 查询近30天活跃用户数

题目链接:1141. 查询近30天活跃用户数 思路: 题目要求:统计截至 2019-07-27(包含2019-07-27),近 30 天的每日活跃用户数(当天只要有一条活动记录,即为活跃用户) 要计算…

react中简单的配置路由

1.安装react-router-dom npm install react-router-dom 2.新建文件 src下新建page文件夹,该文件夹下新建login和index文件夹用于存放登录页面和首页,再在对应文件夹下分别新建入口文件index.js; src下新建router文件用于存放路由配置文件…

「Ant Design」Antd 中卡片如何完全不展示内容区域、按需展示内容区域、不展示标题

前言 下面是默认的 Antd 卡片&#xff0c;由以下区域组成 处理 Antd 的 Card 展示形式大致有下面三种 卡片完全不展示内容区域 const App () > (<Card title"Default size card" extra{<a href"#">More</a>} style{{ width: 300 }}b…

nginx的学习(二):负载均衡和动静分离

简介 nginx的负载均衡和动静分离的简单使用 负载均衡配置 外部访问linux的ip地址:80/edu/a.html地址&#xff0c;会轮询访问Tomcat8080和Tomcat8081服务。 Tomcat的准备 准备两个Tomcat&#xff0c;具体准备步骤在nginx的学习一的反向代理例子2中&#xff0c;在Tomcat8080…

崖山异构数据库迁移利器YMP初体验-Oracle迁移YashanDB

前言 首届YashanDB「迁移体验官」开放后&#xff0c;陆续收到「体验官」们的投稿&#xff0c;小崖在此把优秀的投稿文章分享给大家~今天分享的用户文章是《崖山异构数据库迁移利器YMP初体验-Oracle迁移YashanDB》&#xff08;作者&#xff1a;小草&#xff09;&#xff0c;满满…

让你的程序有记忆功能。

目录 环境 代码 环境 大语言模型&#xff1a; gpt-40-mini Mem0: Empower your AI applications with long-term memory and personalization OpenAPI-Key: Mem0-Key&#xff1a; 代码 import osfrom dotenv import load_dotenv from openai import OpenAI from m…

网络安全领域五大注入攻击类型介绍

在网络安全领域&#xff0c;注入攻击是一种常见的攻击方式&#xff0c;攻击者通过向应用程序发送恶意数据来操控应用程序的行为。以下跟随博主通过具体样例一起来掌握以下五种知名的注入攻击类型。 1. SQL注入&#xff08;SQL Injection&#xff09; 1.1. 概述 SQL注入是最常见…

OAuth2 + Gateway统一认证一步步实现(公司项目能直接使用),密码模式授权码模式

文章目录 认证的具体实现环境的搭建基础版授权服务搭建引入依赖创建数据表yml配置配置SpringSecurity定义认证授权的配置类授权服务器存储客户端信息修改授权服务配置&#xff0c;支持密码模式 基础版授权服务测试授权码模式测试密码模式测试**测试校验token接口** 整合JWT使用…

内网对抗-隧道技术篇防火墙组策略FRPNPSChiselSocks代理端口映射C2上线

知识点&#xff1a; 1、隧道技术篇-传输层-工具项目-Frp&Nps&Chisel 2、隧道技术篇-传输层-端口转发&Socks建立&C2上线Frp Frp是专注于内网穿透的高性能的反向代理应用&#xff0c;支持TCP、UDP、HTTP、HTTPS等多种协议。可以将内网服务以安全、便捷的方式通过…

探索算法系列 - 滑动窗口

目录 长度最小的子数组&#xff08;原题链接&#xff09; 无重复字符的最长子串&#xff08;原题链接&#xff09; 最大连续1的个数 III&#xff08;原题链接&#xff09; 将 x 减到 0 的最小操作数&#xff08;原题链接&#xff09; 水果成篮&#xff08;原题链接&#x…

首个卫星影像全球一张图发布

数据是GIS的血液&#xff01; 我们在《如何加载卫星影像全国一张图》一文中&#xff0c;为你分享过加载卫星影像全国一张图的方法。 现在用该方法&#xff0c;你已经可以加载卫星影像全球一张图了&#xff01; 如何查看全球卫星影像 为了一睹为快&#xff0c;你可以打开以下…

14 集合运算符和矩阵乘法运算符@

集合的交集、并集、对称差集等运算借助于位运算符来实现&#xff0c;而差集则使用减号运算符实现。 print({1, 2, 3} | {3, 4, 5}) # 并集&#xff0c;自动去除重复元素 print({1, 2, 3} & {3, 4, 5}) # 交集 print({1, 2, 3} - {3, 4, 5}) # 差集 print({1, 2, 4, 6, …

Pandas Series对象的创建和基本使用(Pandas Series Object)

pandas是Python的一个第三方数据分析库&#xff0c;其集成了大量的数据模型和分析工具&#xff0c;可以方便的处理和分析各类数据。Pandas中主要对象类型有Series&#xff0c;DataFrame和Index。本文介绍Series对象的创建和基本用法。 文章目录 一、Series对象的创建1.1 通过序…

使用netty编写syslog日志接收服务端

使用netty编写syslog日志接收服务端 1.添加netty依赖 <dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.72.Final</version> <!-- 版本号可能需要根据实际情况更新 --></dependenc…

Docker Desktop安装(通俗易懂)

1、官网 https://www.docker.com/products/docker-desktop/ 2、阿里云镜像 docker-toolbox-windows-docker-for-windows安装包下载_开源镜像站-阿里云 1. 双击安装文件勾选选项 意思就是&#xff1a; Use WSL 2 instead of Hyper-V (recommended) : 启用虚拟化&#xff0c;…

重生之“我打数据结构,真的假的?”--4.二叉树

1.对称二叉树 . - 力扣&#xff08;LeetCode&#xff09; 思路 &#xff1a; 1.设置两个队列l&#xff0c;r&#xff0c;先将root的左节点入l&#xff0c;右节点入r。 2.分别出队&#xff0c;若出队元素相同 Queuepush(&l, front->left); Queuepush(&l, front->…

调度器——DolphinScheduler讲解及安装教程

调度器——DolphinScheduler讲解及安装教程 一&#xff1a;基本讲解 Dolphin Scheduler 1、开源的分布式任务调度系统 2、支持多种任务类型&#xff0c;包括Shell、Spark、Hive等 3、灵活的任务调度功能和友好的Web界面&#xff0c;方便管理和监控任务的执行情况 架构 操作系…

idea 自动生成pojo类

找到这个View>Tool Windows>Database配置数据库 配置好后刷新&#xff0c;查看是否连接上表 然后找到 点击后选择你将要生成的pojo需要保存到哪个文件&#xff0c;然后再次点击&#xff0c;就生成好了&#xff0c;然后自己稍作修改即可使用该pojo类了

Vue3可媲美Element Plus Tree组件实战之移除节点

Element Plus Tree自定义节点内容示例中介绍了移除节点的用法&#xff0c;个人觉得作为提供给用户API&#xff0c;应该遵循迪米特法则&#xff0c;把功能实现的细节封装在组件内部&#xff0c;而提供给用户最简单的操作方式&#xff0c;同时在此基础上支持用户的扩展。 因此&a…