Java-异常

Java的异常 运行时异常是指在程序运行过程中可能会出现的异常,这些异常通常是由程序逻辑错误引起的,而不是外部环境或用户输入造成的。这些异常通常是由外部环境或用户输入造成的,程序员需要在代码中显式地处理这些异常,以确保程序的稳定性和可靠性。在这个示例中,我们展示了一个可能抛出文件未找到异常和IO异常的情况,并使用try-catch块来捕获并处理这些异常。一般在service层处理受检异常,通过创建一个自定义的异常类,在需要的地方抛出自定义异常即可。可以直接在service层的最外层进行抛出异常或者直接捕获异常并处理异常。 阅读详情

异常

第一部分

1、异常概念

异常就是不正常,是指程序在运行时出现的不正常情况;

2、异常的由来

问题也是现实生活中一个具体的事物,也可以通过java的类的形式进行描述,并封装成对象;其实就是java对不正常情况进行描述后的对象体现;

3、异常问题的划分

|--严重的问题:java通过Error类进行描述;

|--对于Error一般不编写针对性的代码对其进行处理;

|--非严重的问题:java通过Exception类进行描述;

|--对于Exception可以使用针对性的处理方式进行处理;

|--两种问题都有共性的内容;-->它们两者就不断的向上抽取,抽取的父类是Throwable;

|--就是不正常的信息,引发原因等;

|--Throwable

|--Error

|--Exception

4、异常的处理

java提供了特有的语句进行处理;
<span style="font-size:14px;">try
{
	需要被检测的代码;
}
catch ()
{
	处理异常的代码;(处理方式)
}
finally
{
	一定会执行的语句;
}</span>

5、对异常对象操作

|--String getMessage()
|--打印异常信息;
|--String toString()
|--打印异常信息的字符串表现形式:异常名称:异常信息
|--void printStackTrace()
|--打印堆栈中的跟踪信息;异常名称,异常信息,异常出现的位置
|--其实jvm默认的异常处理机制,就是在调用printStackTrace()方法;

6、对异常的第二种处理

|--就是在功能上加一个标识,意思就是说,在功能上通过throws的关键字来声明了该功能有可能会出现问题;
|--但是一般不往外抛,捕捉才是硬道理;

7、对多个异常的处理

|--声明异常时,建议声明更为具体的异常,这样处理的更加具体;

|--对方声明几个异常,就对应有几个catch块,不要定义多余的catch块,如果多个catch块中的异常出现继承关系,父类异常catch块放在最下面。

8、异常注意事项

|--当异常被捕捉了以后,会处理好异常后,下面的语句还会继续执行;
|--当函数中只要已有异常发生,那么这个函数就已经结束了,换句话说就是不在继续执行其他的程序了;
|--异常不能同时发生;
|--看上面的功能中有几个异常,那么就对应的有几个catch;
|--如果发生了功能以外了异常,那么父类的catch块放在最下面;
|--建议在进行catch处理时,catch中一定要定义具体的处理方式,也不要简单的写一句输出语句;
|--如果真的发生问题了,把这个信息会有一个硬盘文件把这个异常信息记录下来,这个文件称为异常日志文件;

第二部分

1、自定义异常

|--由于在项目中会出现特有的问题,而这些问题并未被java所描述并封装对象,所以对于这些特有的问题可以按照java的对问题封装的思想,将特有的问题进行自定义的异常封装;

|--在自定义异常是必须要继承Exception;

|--原因:异常体系有个特点:因为异常类和异常对象都需要被抛出,它们都具备可抛性,这个可抛性是Throwable这个体系中的独有特点,只要这个体系中的类和对象才可以被throws和throw操作,只有Throwable体系中的成员,草可以被throws和throw操作;

|--throws和throw的区别:

|--throws使用在函数上,并且后面跟的异常类,可以跟多个,用逗号隔开

|--throw使用在函数内;后面跟的是异常对象;

|--在自定义异常时:如果该异常的发生,无法在继续进行运算,就让自定义异常继承RuntimeException;

2、需求

在本程序中,对于除数是负数,也视为是错误的是无法进行运算的,那么就需要对这个问题进行自定义的描述;
代码体现:
//要先进入Exception体系中
class FuShuException extends Exception
{
	private int value;
	FuShuException(String msg,int value)//父类已经做完了,那么子类就直接拿过来用就可以了
	{
		super(msg);
		this.value = value;
	}
	public int getValue()
	{
		return value;
	}
}
class Demo
{
	int div(int a,int b)throws FuShuException//手动通过throw关键字抛出一个自定义异常对象
	{
		if(b<0)
			throw new FuShuException("出现除数为负数了----/by fushu",b);
		return a/b;
	}
}
class ExceptionDemo3
{
	public static void main(String[] args)
	{
		Demo d = new Demo();
		try
		{
			int x = d.div(4,-2);
			System.out.println("X="+x);
			
		}
		catch (FuShuException e)
		{
			System.out.println(e.toString());
			System.out.println("错误的负数是:"+e.getValue());
			System.out.println("除数出现负数了!");
		}
	}
}

3、运行的结果

4、注意

|--当在函数内部出现了throw抛出异常对象,那么就必须要给对应的处理动作,要么在内部try catch处理,要么在函数上声明让调用者处理;;
|--一般情况下,函数内出现异常,函数上需要声明;

5、如何自定义异常信息

因为父类中已经把异常信息的操作已经完成了,因此子类只要在构造时,将异常信息传递给父类通过super语句,那么就可以直接通过getMessage方法获取自定义的异常信息;

第三部分

1、RuntimeException:运行是异常

|--RuntimeException:这是异常子类是一个非常特殊的,如果在这个RuntimeException或者RuntimeException的子类在函数内抛出了,那么函数上就不要声明了;
|--如果在函数上声明 了该异常,调用者可以不用进行处理,编译一样通过;
|--之所以不用在函数上声明,是因为不需要让调用者处理,当该异常发生了,希望程序停止,因为在运行时,出现了无法继续运算的情况,希望停止程序后,有程序员对代码进行修正;

2、代码体现

//如果该异常的发生,无法在继续进行运算,
//就让自定义异常继承RuntimeException;
class FuShuException extends RuntimeException
{
//	private String msg;
	FuShuException(String msg)
	{
		super(msg);
	}
}
class Demo
{
	int div(int a,int b)
	{
		if(b<0)
			throw new FuShuException("除数出现负数了");
		if(b==0)
			throw new ArithmeticException("除数为零了");
		return a/b;
	}
}
class ExceptionDemo4
{
	public static void main(String[] args)
	{
		Demo d = new Demo();
		int x = d.div(4,0);
		System.out.println("X="+x);
	}
}

3、运行结果

在运行时,出现了无法继续运算的情况,希望停止程序后,有程序员对代码进行修正;

4、对于异常分为两种

|--编译时被检测的异常;
|--编译时不被检测的异常(运行时异常,RuntimeException或者RuntimeException的子类);

第四部分:

我的总结

|--Java异常其实是对不正常情况的一种描述,并将其封装成对象;

|--Java在设计异常体系时,将容易出现的异常情况都封装成了对象。

|--Exception 和 Error的子类名大都是以父类名作为后缀。

|--捕获异常:先捕获小异常再捕获大异常。

|--异常处理后,程序不会因为出现异常而退出。

|--finally代码块只在一种情况下不执行:System.exit(0);

【异常】JAVA常见异常 受检异常需要在编译时处理,而非受检异常通常是在运行时抛出,并且不强制要求在编译时处理。这些异常在编译时必须要处理,通常需要使用 try-catch 块或在方法签名中声明。当应用程序试图通过字符串名称加载类时,如果在类路径中找不到对应的类,则抛出此异常。当方法在不适当的时刻被调用时抛出。当试图将字符串转换为数值类型时,如果字符串的格式不正确,则抛出此异常。通常在输入输出操作失败或中断时抛出,比如文件操作、网络通信等。这些异常在编译时不强制要求处理,通常在运行时抛出。当试图将对象强制转换为不兼容的类型时抛出。 阅读详情

相关推荐

Java 异常处理 -- Java 语言的异常、异常链与断言

世界上存在永远不会出错的程序吗?也许这只会出现在程序员的梦中。随着编程语言和软件的诞生,异常情况就如影随形地纠缠着我们,只有正确处理好意外情况,才能保证程序的可靠性。

栗筝i的博客 5211

Java异常

Java异常的讲解

熵减玩家 987

倍压整流电路设计

倍压整流电路利用二极管和电容的充放电特性实现电压提升,可分为二倍压、三倍压及多倍压结构。其工作原理是通过交流电正负半周交替对电容充电并叠加电压,具有结构简单、成本低的优点,但带载能力差且纹波较大。典型应用包括示波器、电蚊拍等小电流高压场景。设计时需重点考虑电容耐压、二极管选型和负载匹配,高频驱动可优化性能。该电路在低功耗高压电源中具有独特优势,但需注意安全防护与电压稳定性问题。

硬核科技 1721

【java】认识异常,理解异常,掌握异常

文章目录 1️⃣异常的背景 1.认识异常 2.避免异常的两种方式 2️⃣异常的基本用法 1.基本语法 2.多个 catch 块 3.使用共同父类 Exception 捕获异常 4.关于异常的错误输出 5.关于异常的调用链 6.关于 finally 代码块 7.使用 try 回收资源 8.一组关键字:throw 和 throws 9.异常处理流程总结 3️⃣异常体系结构 受查异常 4️⃣自定义异常类

Welcome to my blog. 1071

拯救者Y9000P 2022双系统实战:Ubuntu22.04分区优化与驱动避坑指南

本文提供联想拯救者Y9000P 2022款安装Ubuntu 22.04双系统的详细实战指南。重点讲解针对该机型的磁盘分区优化方案、NVIDIA显卡驱动安装避坑技巧,以及安装后的网络、时间同步等必备配置,帮助用户高效完成双系统部署并提升使用体验。

weixin_29208327的博客 425

【毕业设计】QT实战:从零构建仿QQ通讯系统,打造你的简历亮点项目

本文为计算机专业毕业生提供了一份详尽的毕业设计实战指南,教你如何从零开始使用QT框架构建一个仿QQ的即时通讯系统。文章深入剖析了项目规划、核心模块(登录、聊天、好友管理)的实现、TCP粘包处理、数据库设计等关键技术难点,并分享了如何将此项目打造成简历亮点,有效提升求职竞争力。

omega的博客 443

【Java】认识异常

自定义异常:我们自己定义维护符合我们实际需要的异常结构。//登入if(!System.out.println("用户名错误!");if(!System.out.println("密码错误!");他的密码输入错误,结果输出如上。如果我们想要在我们输错时报出异常,这时,我们可以自己定义一个异常,用户名输入错误异常和密码输入错误异常;我们可以定义一个输入错误异常类和密码输入错误异常类来继承运行时异常super();super(m);super();super(m);

2301_80543957的博客 2258

Metal 一、初识 Metal 及其语言规范

游戏开发者的新的技术平台,该技术能够为3D图像提高 10 倍的渲染性能。苹果2018年推出 Metal,在此之前一直使用OpenGL ES。1图形渲染;2高并发计算。苹果文档给出的 Metal 优化:CPU 低消耗、GPU 高利用、连续处理器并行、有效的资源利用Metal 官方文档。

irainsa的博客 1224

Java——异常

在我们日常生活中,我们可能会生病,会头疼,会肚子疼,打球的时候也可能会受伤。再程序中也是一样,运行时难免会出现一些奇奇怪怪的问题。在Java中,将程序执行过程中发生的不正常行为称为异常。算数异常//算数异常数组越界异常//数组越界异常空指针异常//空指针异常在Java中不同类型的异常,都有与其对应的类来进行描述。程序先执行 try 中的代码如果 try 中的代码出现异常, 就会结束 try 中的代码, 看和 catch 中的异常类型是否匹配.

m0_74100417的博客 1551

别再死记公式了!用TL072运放设计带通滤波器,调出干净正弦波的实战心得与误区盘点

本文分享了使用TL072运放设计带通滤波器的实战经验,重点解决波形失真问题,提供单电源供电优化、动态调谐技巧及仿真与现实的参数修正方法,帮助工程师调出纯净正弦波。内容涵盖模拟电路设计中的常见误区与解决方案,适合电子工程师和爱好者参考。

weixin_29172963的博客 409

【数字IC验证进阶】正则表达式(Regular Expression)快速入门指南

在芯片开发过程中,正则表达式的使用非常常见。初次上手晦涩难懂,多用几次爱不释手!

悟已往之不谏 知来者之可追 1443

java java 检查型异常_Java异常——异常分类、声明检查型异常

一、异常的分类1、在Java程序设计语言中,异常对象都是派生于Throwable类的一个类的实例。如果Java的内置类不能满足需求,用户还可以创建自己的异常类。2、异常分为两支,Error和Exception。Error类层次描述了Java运行时系统的内部错误和资源耗尽错误。这种情况很少出现,如果出现了这种情况,就只能通知用户并妥善地终止程序。Exception类是应该重点关注的层次结构。3、Ex...

weixin_29688535的博客 3145

【2026最新版】python点云处理算法汇总(长期更新版)

python点云处理算法整理。博客长期更新,最近一次更新时间为:2026年10月4日。

点云侠的博客 42万+

JAVA 异常

明白异常到底是什么?—>异常就是类知道异常的体系 / 知道异常的分类在编写程序时,如果程序中出现错误,此时就需要将错误的信息告知给调用者,比如:参数检测。在Java中,可以借助throw关键字,抛出一个指定的异常对象,将错误信息告知给调用者。具体语法如下:throw new XXXException(“异常产生的原因”);throw new NullPointerException("传递的数组为null");

2301_80934700的博客 1409

树根互联Java开发面试题及参考答案

说一下 Java 集合类。 Java 集合类是用于存储和操作一组对象的容器。它提供了多种数据结构,方便程序员对数据进行高效的管理和处理。 Java 集合框架主要包括两大接口:Collection 和 Map。 Collection 接口是一组对象的集合,它有三个主要的子接口:List、Set 和 Queue。 List 接口代表有序的集合,可以包含重复的元素。例如 ArrayList,它是基于数组实现的动态数组。它的优点是随机访问效率高,通过索引访问元素的时间复杂度为 O (1)。当

大模型大数据攻城狮的专栏 856

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【Java异常】Java异常监控重要手段 --异常链

异常链”无论是在框架源码中还是在日常项目开发中,都是一项非常重要的对异常处理的手段。以下摘抄自《Java编程思想》对异常链的介绍:常常会想要在①捕获一个异常后抛出另一个异常②并且希望把原始异常的信息保存下来,这被称为异常链。略。

qq_43783527的博客 2136

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

java各种异常总结

java各种异常总结

linsa_pursuer的博客 3931

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

java异常判断_Java异常类

异常指不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。Java通 过API中Throwable类的众多子类描述各种不同的异常。因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的 错误条件。当条件生成时,错误将引发异常。Java异常类层次结构图:在 Java 中,所有的异常都有一个共同的祖先 ...

weixin_42472941的博客 5345

Java异常总结

Java异常简介 Java异常是Java提供的一种识别及响应错误的一致性机制。 Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性。在有效使用异常的情况下,异常能清晰的回答what, where, why这3个问题:异常类型回答了“什么”被抛出,异常堆栈跟踪回答了“在哪“抛出,异常信息回答了“为什么“会抛出。 Java异常关键字 • try ...

ThinkWon的博客 1万+

【Java异常】什么是异常,Java中如何处理异常?

`Exception`:异常,代表程序可能出现问题,我们通常会用Exception以及他地子类来封装程序出现的问题(异常)。 - `运行时异常`:RuntimeException及其子类,编译阶段不会出现异常提醒。(如:NullPointerException、ArrayIndexOutOfBoundsException) - `编译时异常`:除去RuntimeException及其子类,其余异常都是编译时异常,是编译阶段就会出现的异常,不解决,程序就无法编译运行。

ebb29bbe的博客 651

java异常

Java允许开发者自定义异常类。自定义异常类需要继承Exception类(或其子类)。自定义异常通常用于更精确地描述特定的错误情况。当我们需要我们自己定义异常时我们首先要将我们定义异常的名字去继承我们会出现的异常的类型,若不清楚可以直接继承Exception父类。然后再我们的代码中就可以实现。下面是操作方法:1.建立我们的自定义类usernameerrorexception。

DYLde优快云的博客 1072
上一篇: 匿名内部类
下一篇: Java-多线程
fyldragonfyl
博客等级 码龄12年 9粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值