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

Java 【异常】

一、认识异常 Exception

Java 中,将程序执行过程中发生的不正常行为称为异常
异常是异常exception,报错是报错error

1.算数异常

0不能作为除数,所以算数异常

 2.空指针异常

arr不指向任何对象,打印不出arr的长度,空指针

3.数组下标越界异常

arr数组下标最大为2,没有100这个下标,访问就会报 数组下标越界异常

二、异常的体系结构 

1. Throwable 是异常体系的顶层类,其派生出两个重要的子类 , Error Exception
2. Error 指的是 Java 虚拟机无法解决的严重问题,比如: JVM 的内部错误、资源耗尽等 ,典型代表:
StackOverflflowError OutOfMemoryError ,一旦发生回力乏术。
3. Exception 异常产生后程序员可以通过代码进行处理,使程序继续执行。比如:感冒、发烧。我们平时所说
的异常就是 Exception

 1.异常的分类

异常可能在编译时发生,也可能在程序运行时发生,根据发生的时机不同,可以将异常分为:

1) 编译时异常

在程序编译期间发生的异常,称为编译时异常,也称为受检查异常 (Checked Exception)
例如:clone

 

2)运行时异常

        在程序执行期间发生的异常,称为运行时异常,也称为非受检查异常(Unchecked Exception)
RunTimeException 以及其子类对应的异常,都称为运行时异常
比如: NullPointerException空指针异常 、 ArrayIndexOutOfBoundsException数组下标越界异常、 ArithmeticException算数异常
注意:编译时出现的语法性错误,不能称之为异常。例如将 System.out.println 拼写错了 , 写成了
system.out.println. 此时编译过程中就会出错 , 这是 " 编译期 " 出错。而运行时指的是程序已经编译通过得到 class 文件了 , 再由 JVM 执行过程中出现的错误 .

2.异常处理

1) 防御式编程

错误在代码中是客观存在的
主要的方式

1. LBYL事前防御型:

Look Before You Leap. 在操作之前就做充分的检查. 即:事前防御型

缺陷:正常流程和错误处理流程代码混在一起 , 代码整体显的比较混乱

2. EAFP事后认错型:

It's Easier to Ask Forgiveness than Permission. "事后获取原谅比事前获取许可更容易". 也就是先操 作, 遇到问题再处理. 即:事后认错型

优势:正常流程和错误流程是分离开的 , 程序员更关注正常流程,代码更清晰,容易理解代码
异常处理的核心思想就是 EAFP
Java 中, 异常处理主要的 5 个关键字: throw try catch fifinal throws

3.异常的抛出

1)在方法的声明后,加上throws

加上之后,clone就不会报错了

相关文章:

Java 【异常】

一、认识异常 Exception 在 Java 中,将程序执行过程中发生的不正常行为称为异常 。 异常是异常exception,报错是报错error 1.算数异常 0不能作为除数,所以算数异常 2.空指针异常 arr不指向任何对象,打印不出arr的长度,…...

B - Polycarp‘s Practice

Polycarp is practicing his problem solving skill. He has a list of nn problems with difficulties a_1, a_2, \dots, a_na1​,a2​,…,an​, respectively. His plan is to practice for exactly kk days. Each day he has to solve at least one problem from his list. …...

朴素贝叶斯数据分类------

------------------后期会编辑些关于朴素贝叶斯算法的推导及代码分析----------------- import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.naive_bayes import GaussianNB, BernoulliNB, MultinomialNB from sklear…...

flask中的操作数据库的插件Flask-SQLAlchemy

1、ORM 框架 Web 开发中,一个重要的组成部分便是数据库了。Web 程序中最常用的莫过于关系型数据库了,也称 SQL 数据库。另外,文档数据库(如 mongodb)、键值对数据库(如 redis)近几年也逐渐在 w…...

arrow的使用

pandas2.0引入了pyarrow作为可选后端,比numpy的性能提高很多,所以为了改造backtrader,用cython和c++重写整个框架,准备用arrow作为底层的数据结构(backtrader现在的底层数据结构是基于python array构建的) 安装arrow推荐使用vcpkg git clone https://github.com/Microsoft…...

【24种设计模式】装饰器模式(Decorator Pattern(Wrapper))

装饰器模式 装饰器模式是一种结构型设计模式,用于动态地给对象添加额外的行为或责任,而不需要改变原始对象的结构。通过创建一个包装器类(装饰器),它包含原始对象的引用,并提供与原始对象相同的接口&#…...

小程序v-for与key值使用

小程序中的v-for和key与Vue中的用法基本相同。v-for用于循环渲染列表&#xff0c;key用于给每个循环项分配一个唯一的标识。 使用v-for时&#xff0c;通常建议使用wx:for代替&#xff0c;例如&#xff1a; <view wx:for"{{ items }}" wx:key"id">{…...

Qt包含文件不存在问题解决 QNetworkAccessManager

这里用到了Qt的网络模块&#xff0c;在.pro中添加了 QT network 但是添加 #include <QNetworkAccessManager> 会报错说找不到&#xff0c;可以通过在项目上右键执行qmake后&#xff0c;直接#include <QNetworkAccessManager>就不会报错了&#xff1a;...

【视频图像篇】FastStone Capture屏幕长截图软件

【视频图像篇】FastStone Capture屏幕长截图软件 FastStone Capture最常用的一款屏幕长截图软件—【蘇小沐】 文章目录 【视频图像篇】FastStone Capture屏幕长截图软件实验环境1、启动界面2、自定义工具栏3、自动保存 &#xff08;一&#xff09;长截图1、捕获滚动窗口2、捕获…...

【C语言】每日一题(杨氏矩阵查找数)

目录 杨氏矩阵介绍&#xff1a;方法&#xff1a;思路&#xff1a;代码实现&#xff1a; 杨氏矩阵介绍&#xff1a; 既然在杨氏矩阵中查找数&#xff0c;那什么是杨氏矩阵呢&#xff1f; 矩阵的每行从左到右是递增的&#xff0c;矩阵从上到下是递增的。 例如&#xff1a; 方法…...

探究SpringWeb对于请求的处理过程

探究目的 在路径归一化被提出后&#xff0c;越来越多的未授权漏洞被爆出&#xff0c;而这些未授权多半跟spring自身对路由分发的处理机制有关。今天就来探究一下到底spring处理了什么导致了才导致鉴权被绕过这样严重的问题。 DispatcherServlet介绍 首先在分析spring对请求处…...

如何使用Google Compute Engine入门指南快速创建和配置您的云虚拟机实例

文章目录 步骤1&#xff1a;创建 Google Cloud Platform&#xff08;GCP&#xff09;账户步骤2&#xff1a;设置 GCP 项目步骤3&#xff1a;启用 Google Compute Engine API步骤4&#xff1a;安装 Google Cloud SDK步骤5&#xff1a;创建虚拟机实例步骤6&#xff1a;连接到虚拟…...

springMVC中全局异常处理

前言&#xff1a; 当不同方法执行时&#xff0c;抛出相同异常。为了简约代码和避免重复使用try{}catch{}。此时使用统一异常处理。但局部的统一异常处理只能为所在类所调用。因此产生全局异常处理&#xff0c;该类中统一异常处理方法可以作用于整个controller。&#xff08;以…...

【Nginx24】Nginx学习:压缩模块Gzip

Nginx学习&#xff1a;压缩模块Gzip 又是一个非常常见的模块&#xff0c;Gzip 现在也是事实上的 Web 应用压缩标准了。随便打开一个网站&#xff0c;在请求的响应头中都会看到 Content-Encoding: gzip 这样的内容&#xff0c;这就表明当前这个请求的页面或资源使用了 Gzip 压缩…...

我的私人笔记(zookeeper分布式安装)

分布式安装 1.安装前准备 (1)下载zookeeper&#xff1a;Index of /dist/zookeeper&#xff08;当前使用为3.4.10版本&#xff09; (2)安装JDK (3)拷贝zookeeper安装包到Linux系统下 (4)解压到指定目录 tar -xzvf zookeeper-3.4.10.tar.gz -C /opt/servers/ (5)修改名称 …...

小程序排名优化全攻略

随着小程序的快速发展,小程序之间的竞争也日益激烈。如何在竞争对手众多的环境下脱颖而出,通过小程序排名优化来提高曝光率和流量转化率,已成为许多小程序开发者和运营者关注的重点。本文将全面解析小程序排名优化的方法,让您可以更好地提升小程序的搜索排名。 【名即微】 小程…...

MySQL MHA

什么是 MHA MHA&#xff08;Master High Availability&#xff09;是一套优秀的MySQL高可用环境下故障切换和主从复制的软件 MHA 的出现就是解决MySQL 单点故障的问题 MySQL故障切换过程中&#xff0c;MHA能做到0-30秒内自动完成故障切换操作 MHA能在故障切换的过程中最大程度上…...

Java API速记手册(持续更新ing...)

诸神缄默不语-个人CSDN博文目录 之所以干这个事原因也很简单&#xff0c;因为我3年没写Java了&#xff0c;现在在复健。 因为我最近都在用Python&#xff0c;所以跟Python一样的部分我就不写了。 最基本的框架public class MainClass {public static void main(String[] args…...

FANUC机器人电气控制柜内部硬件电路和模块详细介绍

FANUC机器人电气控制柜内部硬件电路和模块详细介绍 PSU电源单元 通过背板传输了如下电源 +5 +2.0V +3.3 +24v +24E +15V -15V 主板--接口描述: 主板内部结构: 面板电路板: 引申一下 KM21 与 KM22 的作用它们分别接至操作面板上上的急停按...

LGFormer:LOCAL TO GLOBAL TRANSFORMER FOR VIDEO BASED 3D HUMAN POSE ESTIMATION

基于视频的三维人体姿态估计的局部到全局Transformer 作者&#xff1a;马海峰 *&#xff0c;陆克 * †&#xff0c;薛健 *&#xff0c;牛泽海 *&#xff0c;高鹏程† * 中国科学院大学工程学院&#xff0c;北京100049 鹏程实验室&#xff0c;深圳518055 来源&#xff1a;202…...

SeqGPT-560M惊艳效果:支持多值字段提取——同一段文本中识别全部手机号而非仅首个

SeqGPT-560M惊艳效果&#xff1a;支持多值字段提取——同一段文本中识别全部手机号而非仅首个 在信息爆炸的时代&#xff0c;我们每天都要处理海量的非结构化文本。无论是从一份简历里找出候选人的所有联系方式&#xff0c;还是从一份合同里提取所有涉及的金额和日期&#xff…...

Axure Mac全汉化3步法:设计师效率提升实战指南

Axure Mac全汉化3步法&#xff1a;设计师效率提升实战指南 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包&#xff0c;不定期更新。支持 Axure 9、Axure 10。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 你是否曾…...

vLLM 5.0.4 实战:从参数解析到批量推理的性能调优指南

1. vLLM 5.0.4核心参数解析与实战配置 初次接触vLLM时&#xff0c;最让人头疼的就是那一长串参数列表。我在实际项目中使用Meta-Llama-3.1-8B-Instruct模型时&#xff0c;就曾因为参数配置不当导致显存爆炸。下面分享几个关键参数的实战经验&#xff1a; LLM类参数中的max_mode…...

5分钟搞定黑苹果音频驱动:AppleALC新手配置指南

5分钟搞定黑苹果音频驱动&#xff1a;AppleALC新手配置指南 【免费下载链接】AppleALC Native macOS HD audio for not officially supported codecs 项目地址: https://gitcode.com/gh_mirrors/ap/AppleALC AppleALC是一款强大的开源内核扩展工具&#xff0c;能让非官方…...

PCL点云凹包计算实战:从2D投影到3D建模的Alpha-Shape算法解析

1. Alpha-Shape算法&#xff1a;点云凹包计算的灵魂 第一次接触点云凹包计算时&#xff0c;我被这个看似简单实则精妙的问题难住了。传统凸包算法就像给点云套上一个紧绷的橡皮筋&#xff0c;而实际项目中我们经常需要保留物体表面的凹陷特征。这时候Alpha-Shape算法就派上了大…...

好用还专业!盘点2026年备受推崇的一键生成论文工具

一天写完毕业论文在2026年已不再是天方夜谭。最新实测显示&#xff0c;一键生成论文工具正在颠覆传统写作方式&#xff0c;覆盖选题、文献、写作、降重、排版等核心场景&#xff0c;真正实现高效搞定论文&#xff0c;学生党必备神器。 一、全流程王者&#xff1a;一站式搞定论文…...

重构直播互动体验:BLiveChat的跨平台弹幕解决方案

重构直播互动体验&#xff1a;BLiveChat的跨平台弹幕解决方案 【免费下载链接】blivechat 用于OBS的仿YouTube风格的bilibili直播评论栏 项目地址: https://gitcode.com/gh_mirrors/bl/blivechat BLiveChat作为一款开源的B站直播弹幕工具&#xff0c;通过仿YouTube风格的…...

OpenClaw新手避坑指南:GLM-4.7-Flash部署的5个常见错误

OpenClaw新手避坑指南&#xff1a;GLM-4.7-Flash部署的5个常见错误 1. 为什么写这篇指南 上周我在自己的M1 MacBook上尝试部署OpenClaw对接GLM-4.7-Flash模型时&#xff0c;经历了堪称"教科书级"的踩坑过程。从模型地址格式错误到端口冲突&#xff0c;几乎把所有新…...

Multisim仿真-FSK调制系统设计与性能优化

1. FSK调制系统基础与Multisim入门 FSK&#xff08;频移键控&#xff09;是数字通信中最基础的调制方式之一&#xff0c;它通过不同频率的载波来表示二进制数据。在实际工程中&#xff0c;Multisim作为电子电路仿真利器&#xff0c;能帮我们快速验证设计思路。我刚开始接触通信…...

DALL-E2-pytorch训练日志完全解读指南:如何从loss曲线判断模型健康状态

DALL-E2-pytorch训练日志完全解读指南&#xff1a;如何从loss曲线判断模型健康状态 【免费下载链接】DALLE2-pytorch Implementation of DALL-E 2, OpenAIs updated text-to-image synthesis neural network, in Pytorch 项目地址: https://gitcode.com/gh_mirrors/da/DALLE2…...