首页 > 编程语言 >java异常你了解多少

java异常你了解多少

时间:2024-08-15 20:26:49浏览次数:11  
标签:java 处理 throws try finally catch 异常 多少

一、知识点概述

(1)异常:异常就是Java程序在运行过程中出现的错误。

(2)异常由来:问题也是现实生活中一个具体事务,也可以通过java 的类的形式进行描述,并封装成对象。其实就是Java对不正常情况进行描述后的对象体现。

(3)JVM的默认处理方案

把异常的名称,错误原因及异常出现的位置等信息输出在了控制台
程序停止执行

(4)异常处理方案

4.1 try…catch…finally

try{
可能会出错的代码;
}catch(异常类 参数){
处理的方案逻辑;
}finally{
释放资源的代码
};

4.1.1 try..catch..注意事项:

    1、try中定义变量作用域就在try种使用
    2、若try中代码没有异常,是不会匹配catch的
    3、catch若没有try出现的异常类型的话,就会使用java默认处理异常方案
    4、catch可以写多个,也可写一个,但是若多个catch存在继承关系的话,将父亲放在儿子的后面
    5、若使用jdk1.8新特性写法,使用一个catch接收多个异常类的话,不允许出现父子关系异常

4.2 throws

(5)Java中的异常被分为两大类:编译时异常和运行时异常。所有的RuntimeException类及其子类的实例被称为运行时异常,其他的异常就是编译时异常

5.1编译时异常

Java程序必须显示处理,否则程序就会发生错误,无法通过编译

5.2运行时异常

无需显示处理,也可以和编译时异常一样处理

(6)finally的特点

被finally控制的语句体一定会执行
特殊情况:在执行到finally之前jvm退出了(比如System.exit(0))

(7)finally的作用

无论try中的代码是否出现问题,这里的代码都会执行
一般情况下,finally里面写释放资源的代码,在IO流操作和数据库操作中会见到

(8)如果catch里面有return语句,请问finally的代码还会执行吗?如果会,请问是在return前还是return后。

会,会在return前执行,因为finally用法特殊,所以会撤销之前的return语句,继续执行最后的finally块中的代码。

(9)Throwable中的方法

getMessage()
获取异常信息,返回字符串。
toString()
获取异常类名和异常信息,返回字符串。
printStackTrace()  、//比较常用
获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void。
printStackTrace(PrintStream s)
通常用该方法将异常内容保存在日志文件中,以便查阅。

(10)throws

定义功能方法时,需要把出现的问题暴露出来让调用者去处理。那么就通过throws在方法上标识。
举例分别演示编译时异常和运行时异常的抛出

(11)throw和throws的区别

throws
用在方法声明后面,跟的是异常类名
可以跟多个异常类名,用逗号隔开
表示抛出异常,由该方法的调用者来处理
throws表示出现异常的一种可能性,并不一定会发生这些异常
throw
用在方法体内,跟的是异常对象名
只能抛出一个异常对象名
表示抛出异常,由方法体内的语句处理
throw则是抛出了异常,执行throw则一定抛出了某种异常

(12)我们到底该如何处理异常呢

原则:如果该功能内部可以将问题处理,用try,如果处理不了,交由调用者处理,这是用throws
区别:
后续程序需要继续运行就try
后续程序不需要继续运行就throws

标签:java,处理,throws,try,finally,catch,异常,多少
From: https://www.cnblogs.com/zhuzhuya/p/18361669

相关文章

  • Java Data解决报错过程记录
    [attendancewebservice][24-08-1519:01:03.199][b3960aea15204b76b7c838189c28d45d][10.129.1.238]DEBUG[Thread-10][ne.jdbc.spi.SqlExceptionHelper.logExceptions139]couldnotexecutequery[select*fromid_customerswhereuserid=?]java.sql.SQLExceptio......
  • java7
    一、内部类1.成员内部类在一个类的内部定义的普通类可以访问外部类的所有成员,包括私有成员需要一个外部类的实例来创建成员内部类的实例可以被修饰为public、private、protected或者默认2.静态内部类一个静态内部类是静态的成员类。不需要外部类的实例来创建静态内部类......
  • SpringBoot统一异常处理
    简介在SpringBoot项目中实现统一的异常处理是一种常见的做法,这有助于保持代码的整洁并提供一致的错误响应格式。SpringBoot中的统一异常处理是一种机制,用于集中管理和格式化应用程序中抛出的所有异常。这种机制可以提高程序的健壮性和用户体验,同时简化开发过程。统一异常处理......
  • 定制计算机专业软件工程毕业设计毕设代做一般多少钱?
    好多人咨询我,定制计算机专业软件工程毕业设计毕设代做一般多少钱?答:计算机专业的毕业设计服务,定制其定价至少为1000元,这一费用设定有其合理依据。此类设计项目不仅涵盖了撰写毕业论文的学术要求,还深度涉及了程序设计与实现,是对学生专业知识、实践能力及创新能力的全面考验。毕......
  • 实现同时接收文件与实体类,java springboot maven
    首先,需要有一个Post接口,有一个实体类方法需要返回什么,直接修改void即可实体类需要接收什么,直接改User即可 @PostMapping(value="/post_interface")publicvoidpostInterface(@RequestParam("file")MultipartFilefile,@RequestParamMap<String,Object>user){......
  • Java的三大使用平台
    一、Java的三大使用平台:1.JavaSE2.JavaME3.JavaEE 二、JavaSEJavaSE用于桌面应用的开发,是其它2个版本的基础。何谓桌面应用?用户只要打开程序,程序的界面会让用户在最短的时间内找到他们需要的功能,同时主动带领用户完成他们的工作并得到最好的体验。学习JavaSE的目的......
  • 【日常记录-Java】EasyExcel输出设定字体
    Author:赵志乾Date:2024-08-15Declaration:AllRightReserved!!!1.问题描述    使用EasyExcel默认的设定输出时,中文字体显得比较怪异。2.解决方案    本质是单元格样式的设置问题,在EasyExcel中,可以通过实现WriteHandler接口或使用EasyExcel提供的注解以及W......
  • java并发
    线程的生命周期(线程有几种状态)线程通常有五种状态,创建,就绪,运行、阻塞和死亡状态:新建状态(New):新创建了一个线程对象。就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。运行状态(Ru......
  • 【Java】 IO流使用方法 (常见方法)
    Java系列文章目录补充内容Windows通过SSH连接Linux第一章Linux基本命令的学习与Linux历史文章目录Java系列文章目录一、前言二、学习内容:三、问题描述四、解决方案:4.1File的使用4.2防止乱码问题五、总结:5.1学习总结:一、前言学习文件IO流学习文档的使用具......
  • 使用dotenv保护JavaScript代码中的秘密信息
    把诸如apikey这种秘密信息写死的源代码里不可取,比如通常源代码会通过git仓库等进行管理,这样敏感信息就会被共享了。我们选择使用dotenv库把敏感信息配置在.env文件中,然后把.env文件添加到gitignore文件里,不上传到代码仓库。node程序启动后,会将.env文件里的配置项加载到进程对应......