Java异常

一,Java异常概述

1.异常概述:

异常:在我们程序运行过程中出现的非正常情况
在开发中,即使我们的代码写的很完善,也有可能由于一些外因(用户输入有误,文件被删除,网络问题)导致程序出现不正常情况

代码错误,编译不能通过,不属于异常情况

广义上的的异常:
指的就是所有不正常情况
狭义上的异常:
exception  可以处理的异常

2.Java中常见异常案例:

        索引越界int a = 10;int b = 0;System.out.println(a/b);Exception in thread "main" java.lang.ArithmeticException: / by zeroat com.ffyc.javaexception.Demo1.main(Demo1.java:19)
        索引越界int[] a = {1,2,3,4,5};a[5]= 6;Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5at com.ffyc.javaexception.Demo1.main(Demo1.java:25)
        索引越界String s = "abc";s.charAt(4);Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 4at java.lang.String.charAt(String.java:658)at com.ffyc.javaexception.Demo1.main(Demo1.java:31)
        数字格式化String s = "a1";Integer.parseInt(s);Exception in thread "main" java.lang.NumberFormatException: For input string: "a1"at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)at java.lang.Integer.parseInt(Integer.java:580)at java.lang.Integer.parseInt(Integer.java:615)at com.ffyc.javaexception.Demo1.main(Demo1.java:40)
        使用了一个为null的对象    空指针异常String s = null;s.length();Exception in thread "main" java.lang.NullPointerExceptionat com.ffyc.javaexception.Demo1.main(Demo1.java:51)
        类型转换异常Object obj = "abc";Integer a = (Integer) obj;Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integerat com.ffyc.javaexception.Demo1.main(Demo1.java:58)
    public static void main(String[] args) {
//        Exception in thread "main" java.lang.StackOverflowError
//        栈溢出错误, 调用方法过多,内存不够,sum(500000);}public  static  int sum (int num){if (num == 1){return 1;}return num + sum(num - 1);}

3.Java异常处理机制:

Java中吧可能出现的每种异常情况,都封装成了一个类  ,当出现某中类型异常时,抛出此类型的对象

(1)什么都不管:程序终止运行(不是我们想要的)
(2)异常处理,接收抛出的对象,提供处理程序,让后面的程序可以继续的执行(使用的)

二,Java异常体系结构

Throwable可分为两类:Error和Exception。

分别对应着java.lang.Errorjava.lang.Exception两个类。

Error:Java虚拟机无法解决的严重问题。如:JVM系统内部错误、内存资源耗

尽等严重情况。一般不编写针对性的代码进行处理。

例如:StackOverflowError(栈内存溢出)。

Exception: 其它因编程错误或偶然的外在因素导致的一般性问题,需要使用针对

性的代码进行处理,使程序继续运行。

三,Java异常处理

1,Java的异常处理是通过5个关键字来实现的:try,catch,finally,throw,throws

基本语法

try{

可能会发生异常的代码

}catch(异常类型 引用名){

异常处理代码

}

try{

可能会发生异常的代码

}catch(异常类型 引用名){

异常处理代码

}finally{

必须执行代码

}

throws,定义一个方法的时候可以使用throws关键字声明,表示此方法 不处理异常,而交给方法调用处进行处理。

例如:

public void test() throws 异常1,异常2,异常3{

}

(1)任何方法都可以使用throws关键字声明异常类型,包括抽象方法。

(2)调用使用了throws的方法时必须处理声明的异常,要么使用try-catch,要么继续使用throws声明。

(3)如果抛出的是运行期异常,则不会有任何提示,需要查看所调用的方法结构.

异常分为运行期异常和编译期异常两种

(1)编译时期异常(即checked异常、受检异常):在代码编译阶段,编译器就能明

确警示当前代码可能发生XX异常,并明确督促程序员提前编写处理它的代码。如

果程序员没有编写对应的异常处理代码,则编译器就会直接判定编译失败,从而

不能生成字节码文件。

(2)运行时期异常(即runtime异常):在代码编译阶段,编译器完全不做任何检查,

无论该异常是否会发生,编译器都不给出任何提示。只有等代码运行起来并确实

发生了XX异常,它才能被发现。

throw关键字用于显式抛出异常,抛出的时候是抛出的是一个异常类的实例化对象.

语法:throw new 异常类构造方法

eg:

public static void test(int[] arr,int index)throws ArrayIndexOutOfBoundsException{
if(index<0||index>=arr.length){
throw new ArrayIndexOutOfBoundsException("数组索引越界了");
}
System.out.println(arr[index]);
}

四,自定义异常

自定义异常,在业务逻辑中,当不满足某种条件是,可以根据需要自定义对应的异常类型
与api中标准异常进行区分

作用:用自定义异常标记业务逻辑的异常,避免与标准异常混淆

基本语法:

public class 异常类名 extends Exception/RuntimeException{
public 异常类名(String msg){
super(msg);
}
}

(1) 自定义异常类中往往不写其他方法,只重载需要使用的构造方法

(2) 继承Exception,在方法中使用throw抛出后,必须在方法中try-catch或

throws抛出

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

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

相关文章

Linux下的网络通信编程

在不同主机之间&#xff0c;进行进程间的通信。 1解决主机之间硬件的互通 2.解决主机之间软件的互通. 3.IP地址&#xff1a;来区分不同的主机&#xff08;软件地址&#xff09; 4.MAC地址&#xff1a;硬件地址 5.端口号&#xff1a;区分同一主机上的不同应用进程 网络协议…

Metal 学习笔记五:3D变换

在上一章中&#xff0c;您通过在 vertex 函数中计算position&#xff0c;来平移顶点和在屏幕上移动对象。但是&#xff0c;在 3D 空间中&#xff0c;您还想执行更多操作&#xff0c;例如旋转和缩放对象。您还需要一个场景内摄像机&#xff0c;以便您可以在场景中移动。 要移动…

数据集笔记:新加坡LTA MRT 车站出口、路灯 等位置数据集

1 MRT 车站出口 data.gov.sg &#xff08;geojson格式&#xff09; 1.1 kml格式 data.gov.sg 2 路灯 data.govsg ——geojson data.gov.sg——kml 版本 3 道路摄像头数据集 data.gov.sg 4 自行车道网络 data.gov.sg 5 学校区域 data.gov.sg 6 自行车停车架&#xff…

【弹性计算】弹性裸金属服务器和神龙虚拟化(一):功能特点

弹性裸金属服务器和神龙虚拟化&#xff08;一&#xff09;&#xff1a;功能特点 特征一&#xff1a;分钟级交付特征二&#xff1a;兼容 VPC、SLB、RDS 等云平台全业务特征三&#xff1a;兼容虚拟机镜像特征四&#xff1a;云盘启动和数据云盘动态热插拔特征五&#xff1a;虚拟机…

发展中的脑机接口:SSVEP特征提取技术

一、简介 脑机接口&#xff08;BCI&#xff09;是先进的系统&#xff0c;能够通过分析大脑信号与外部设备之间建立通信&#xff0c;帮助有障碍的人与环境互动。BCI通过分析大脑信号&#xff0c;提供了一种非侵入式、高效的方式&#xff0c;让人们与外部设备进行交流。BCI技术越…

EasyRTC:支持任意平台设备的嵌入式WebRTC实时音视频通信SDK解决方案

随着互联网技术的飞速发展&#xff0c;实时音视频通信已成为各行各业数字化转型的核心需求之一。无论是远程办公、在线教育、智慧医疗&#xff0c;还是智能安防、直播互动&#xff0c;用户对低延迟、高可靠、跨平台的音视频通信需求日益增长。 一、WebRTC与WebP2P&#xff1a;实…

为AI聊天工具添加一个知识系统 之127 详细设计之68 编程 核心技术:Cognitive Protocol Language 之2

问题 Q1396、根据我们的讨论&#xff0c;我前面给出的文字表述在用词准确性上以及完整性&#xff08;忽略细节&#xff09; 您觉得有问题吗&#xff1f;有用词错误和 缺项的问题吗 Q1397、请对具体术语的数学定义或工程实现方案进行深度扩展说明 Q1398、 请为全部映射关系提供…

ELK接入SpringBoot【Docker Compose】

安装Docker-Compose curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose 随便找个地&#xff0c;创建docker-compose.yml文件&#xff0c;把这坨文本复制进去 version: 3 services:el…

基于javaweb的SSM+Maven幼儿园管理系统设计和实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

NAT 代理服务 内网穿透

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Linux 目录 一&#xff1a;&#x1f525; NAT 技术背景二&#xff1a;&#x1f525; NAT IP 转换过程三&#xff1a;&#x1f525; NAPT四&#xff1a;&#x1f525; 代理服务器&#x1f98b; 正向…

Apache IoTDB 树表双模型直播回顾(下)

2 月 26 日面向 Apache IoTDB 树表双模型的功能特性、适用场景、建模选择和未来规划&#xff0c;田原同学通过直播进行了全面解答。以下为直播讲稿&#xff08;下&#xff09;&#xff0c;干货满满&#xff0c;建议收藏⬇️⬇️ ⚡️注意&#xff1a; 1. 功能演示部分请直接查看…

LabVIEW中交叉关联算法

交叉关联算法通过统计多通道信号间的相关性&#xff0c;抑制各通道独立的本底噪声&#xff0c;保留共有的有效信号成分。其数学本质为对多个通道信号进行两两相乘并累加&#xff0c;最终通过归一化处理得到降噪后的输出信号。 这个VI演示了如何在LabVIEW中执行信号的互相关分析…

手撸大模型-基础篇 简单线性回归模型预测房价

# NumPy Pandas Matplotlib import numpy as np import matplotlib.pyplot as plt 双特征&#xff0c;矩阵化 1. Min-Max 归一化及其逆操作 1.1 输入数据归一化 def normalize1(sample, data): max_value np.max(data) min_value np.min(data) return (samp…

使用UA-SPEECH和TORGO数据库验证自动构音障碍语音分类方法

使用UA-SPEECH和TORGO数据库验证自动构音障碍语音分类方法 引言 原文:On using the UA-Speech and TORGO databases to validate automatic dysarthric speech classification approaches 构音障碍简介 构音障碍是一种由于脑损伤或神经疾病(如脑瘫、肌萎缩侧索硬化症、帕金森…

React底层原理详解

React中Element&Fiber对象、WorkInProgress双缓存、Reconcile&Render&Commit、第一次挂载过程详解 在面试中介绍React底层原理时&#xff0c;需遵循逻辑清晰、层次分明、重点突出的原则&#xff0c;结合技术深度与实际应用场景。以下是结构化回答模板&#xff1a;…

el-table修改表格颜色

文章目录 一、el-table属性修改表格颜色1.1、header-row-class-name修改表头行颜色1.2、header-row-style修改表头样式1.3、row-class-name修改行颜色 二、el-table-column属性修改表格颜色2.1、class-name修改整列的颜色2.2、label-class-name修改列标题颜色 本文讲解vue修改e…

Graphics View画一个可调速的风机(pyqt)

效果如图&#xff1a; 风机具备调节转速的功能&#xff0c;转速通过扇叶旋转的快慢来区别&#xff0c;共分为四档&#xff0c;其中零档为静止状态&#xff0c;而一、二、三档则依次增加转速。在代码中&#xff0c;BlowerWrapper 类包含了可旋转的扇叶、风机外框以及选项三个主要…

SP脏迹Dirt生成器

常用生成器之一 用于模型表面生成污垢和脏迹 添加一个填充图层 添加黑色遮罩 添加生成器 选择Dirt 调整强度 如果UV有接缝就把Use Triplanar打开

AnyDesk 远程桌面控制软件 v9.0.2

AnyDesk 是一款功能强大的跨平台远程桌面控制软件。它支持 Windows、MacOS、Linux 和 Android 系统&#xff0c;同时 iOS 也在其支持范围内。其主要功能包括远程桌面控制&#xff0c;用户能远程访问其他计算机或移动设备&#xff0c;用于远程协作、支持和教授等&#xff0c;可实…

关于延迟任务线程池,Java提供的ScheduledThreadPoolExecutor,Spring提供的ThreadPoolTaskScheduler

今天讲解定时任务、延迟任务的线程池使用方式&#xff1a; 1、从 java 角度 2、从 Spring 框架角度 文章目录 Java提供&#xff1a;ScheduledExecutorService接口&#xff08;创建延迟任务线程池&#xff09;① 用法1&#xff1a;1. 重写afterExecute方法2. .schedule()方法调度…