JAVA异常类异常抛出处理

简介: JAVA异常类异常抛出处理

目录


程序异常的含义

什么是异常

异常处理

使用try...catch(和finally)语句对异常进行捕获处理

使用throws关键字声明抛出异常

使用throw关键字声明抛出异常

自定义异常类

总结


正文


程序异常的含义


程序中的异常:在程序运行的过程中,也会发生这种非正常状况,例如程序运行时磁盘空间不足、网络连接中断、被加载的类不存在等。

程序异常解决方法:针对程序中的非正常情况,Java语言中引入了异常,以异常类的形式对这些非正常情况进行封装,并通过异常处理机制对程序运行时发生的各种问题进行处理。


什么是异常


我们常说的程序异常通常又两种,一是错误(error),二是异常类(Exception)。

2a2948cabbcb4572aa48294baab41b5c.png

error称为错误,表示Java运行时产生的系统内部错误或资源耗尽的错误,是比较严重的,仅靠修改程序本身是不能恢复执行的,例如系统崩溃,虚拟机错误等。


Exception称为异常类,它表示程序本身可以处理的错误。在Java程序开发中进行的异常处理,都是针对Exception类及其子类的。

牢记:异常也是一种对象


异常处理


使用try...catch(和finally)语句对异常进行捕获处理


当程序发生异常时,会立即终止,无法继续向下执行。为了保证程序能够有效的执行,Java中提供了一种对异常进行处理的方式——异常捕获。

💫异常捕获try…catch语句的基本语法格式:


try {
         // 可能发生异常的语句
    } catch(Exception类或其子类 e){
         // 对捕获的异常进行相应处理
    }

在try{}代码块中,发生异常语句后面的代码是不会被执行的。在程序中,如果希望有些语句无论程序是否发生异常都要执行,这时就可以在try…catch语句后,加一个finally{}代码块。

💫异常捕获try…catch…finally语句的基本语法格式:


 

try {
         // 可能发生异常的语句
    } catch(Exception类或其子类 e){
         // 对捕获的异常进行相应处理
    } finally {
         // 无论是否发生异常,此代码块代码总会执行
}


使用throws关键字声明抛出异常


一般在程序开发中,开发者通常会意识到程序可能出现的问题,可以直接通过try…catch对异常进行捕获处理。但有些时候,方法中代码是否会出现异常,开发者并不明确或者并不急于处理,为此,Java允许将这种异常从当前方法中抛出,然后让后续的调用者在使用时再进行异常处理。

💫throws关键字抛出异常的基本语法格式:


[修饰符] 返回值类型 方法名([参数类型 参数名1...]) throws 异常类1,异常类2,... {
  // 方法体...
}


使用throw关键字声明抛出异常


程序开发中,除了可以通过throws关键字抛出异常外,还可以使用throw关键字抛出异常。

1.png

说明:通过throw关键字抛出异常后,还需要使用throws关键字或try…catch对异常进行处理。

注意:如果throw抛出的是Error、RuntimeException或它们的子类异常对象,则无需使用throws关键字或try…catch对异常进行处理。

💫throw关键字抛出异常的基本语法格式:

    [修饰符] 返回值类型 方法名([参数类型 参数名,...]) throws 抛出的异常类 {
            // 方法体...
            throw new Exception类或其子类构造方法;
}


自定义异常类


Java中定义了大量的异常类,虽然这些异常类可以描述编程时出现的大部分异常情况,但是在程序开发中有时可能需要描述程序中特有的异常情况,例如在设计divide()方法时不允许被除数为负数

解决方法:Java允许用户自定义异常,但自定义的异常类必须继承自Exception或其子类。

有关异常对象的两件最重要的事情是:

💥对象的类型,即异常类的名字。

💥对象在String类型实例变量中携带的消息。这个字符串可以通过调用访问器方法getMessage来找回。该字符串允许我们的代码将一条消息随异常对象一起发送,使得catch块可以找回该消息。

💫自定义异常的创建示例:

    public class DivideByMinusException extends Exception{
          public DivideByMinusException (){
  super();          // 调用Exception无参的构造方法
          }
          public DivideByMinusException (String message){
  super(message); // 调用Exception有参的构造方法
          }
    }


总结


1.异常处理使得我们可以在为程序的正常情况设计并编码时,将其与处理异常情况的代码分离开。


2.某些Java语句自身可能会抛出异常。类库中的方法也可能会抛出异常。我们还可以显式地在代码中用throw语句抛出异常。


3.当一个方法可能会抛出异常但是又没有捕获它时,通常必须在该方法的throws子句中列出该异常类。


4.每个异常都有一个getMessage方法,它可以用来找回被捕获异常的描述信息。


相关文章
|
1天前
|
缓存 安全 Java
《从头开始学java,一天一个知识点》之:输入与输出:Scanner与System类
你是否也经历过这些崩溃瞬间?三天教程连`i++`和`++i`都说不清,面试时`a==b`与`equals()`区别大脑空白,代码总是莫名报NPE。这个系列就是为你打造的Java「速效救心丸」!每天1分钟,地铁通勤、午休间隙即可学习。直击高频考点和实际开发中的“坑位”,拒绝冗长概念,每篇都有可运行代码示例。涵盖输入输出基础、猜数字游戏、企业编码规范、性能优化技巧、隐藏技能等。助你快速掌握Java核心知识,提升编程能力。点赞、收藏、转发,助力更多小伙伴一起成长!
30 19
|
2天前
|
SQL druid Oracle
【YashanDB知识库】yasdb jdbc驱动集成druid连接池,业务(java)日志中有token IDENTIFIER start异常
客户Java日志中出现异常,影响Druid的merge SQL功能(将SQL字面量替换为绑定变量以统计性能),但不影响正常业务流程。原因是Druid在merge SQL时传入null作为dbType,导致无法解析递归查询中的`start`关键字。
|
2天前
|
SQL Java 中间件
【YashanDB知识库】yasdb jdbc驱动集成BeetISQL中间件,业务(java)报autoAssignKey failure异常
在BeetISQL 2.13.8版本中,客户使用batch insert向yashandb表插入数据并尝试获取自动生成的sequence id时,出现类型转换异常。原因是beetlsql在prepareStatement时未指定返回列,导致yashan JDBC驱动返回rowid(字符串),与Java Bean中的数字类型tid不匹配。此问题影响业务流程,使无法正确获取sequence id。解决方法包括:1) 在batchInsert时不返回自动生成的sequence id;2) 升级至BeetISQL 3,其已修正该问题。
【YashanDB知识库】yasdb jdbc驱动集成BeetISQL中间件,业务(java)报autoAssignKey failure异常
|
2天前
|
缓存 安全 Java
《从头开始学java,一天一个知识点》之:字符串处理:String类的核心API
🌱 **《字符串处理:String类的核心API》一分钟速通!** 本文快速介绍Java中String类的3个高频API:`substring`、`indexOf`和`split`,并通过代码示例展示其用法。重点提示:`substring`的结束索引不包含该位置,`split`支持正则表达式。进一步探讨了String不可变性的高效设计原理及企业级编码规范,如避免使用`new String()`、拼接时使用`StringBuilder`等。最后通过互动解密游戏帮助读者巩固知识。 (上一篇:《多维数组与常见操作》 | 下一篇预告:《输入与输出:Scanner与System类》)
31 11
|
8天前
|
Oracle Java 关系型数据库
课时37:综合实战:数据表与简单Java类映射转换
今天我分享的是数据表与简单 Java 类映射转换,主要分为以下四部分。 1. 映射关系基础 2. 映射步骤方法 3. 项目对象配置 4. 数据获取与调试
|
8天前
|
存储 Java 编译器
课时11:综合实战:简单Java类
本次分享的主题是综合实战:简单 Java 类。主要分为两个部分: 1.简单 Java 类的含义 2.简单 Java 类的开发
|
8天前
|
Java
课时14:Java数据类型划分(初见String类)
课时14介绍Java数据类型,重点初见String类。通过三个范例讲解:观察String型变量、"+"操作符的使用问题及转义字符的应用。String不是基本数据类型而是引用类型,但使用方式类似基本类型。课程涵盖字符串连接、数学运算与字符串混合使用时的注意事项以及常用转义字符的用法。
|
9天前
|
传感器 监控 Java
Java代码结构解析:类、方法、主函数(1分钟解剖室)
### Java代码结构简介 掌握Java代码结构如同拥有程序世界的建筑蓝图,类、方法和主函数构成“黄金三角”。类是独立的容器,承载成员变量和方法;方法实现特定功能,参数控制输入环境;主函数是程序入口。常见错误包括类名与文件名不匹配、忘记static修饰符和花括号未闭合。通过实战案例学习电商系统、游戏角色控制和物联网设备监控,理解类的作用、方法类型和主函数任务,避免典型错误,逐步提升编程能力。 **脑图速记法**:类如太空站,方法即舱段;main是发射台,static不能换;文件名对仗,括号要成双;参数是坐标,void不返航。
34 5
|
27天前
|
Java 程序员 开发者
Java社招面试题:一个线程运行时发生异常会怎样?
大家好,我是小米。今天分享一个经典的 Java 面试题:线程运行时发生异常,程序会怎样处理?此问题考察 Java 线程和异常处理机制的理解。线程发生异常,默认会导致线程终止,但可以通过 try-catch 捕获并处理,避免影响其他线程。未捕获的异常可通过 Thread.UncaughtExceptionHandler 处理。线程池中的异常会被自动处理,不影响任务执行。希望这篇文章能帮助你深入理解 Java 线程异常处理机制,为面试做好准备。如果你觉得有帮助,欢迎收藏、转发!
105 14
|
1月前
|
缓存 Java 应用服务中间件
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
135 5

热门文章

最新文章