java之异常

目录

一、简介

二、作用

三、JVM默认处理异常方式 

四、捕获异常

1.格式

2.目的

 3.示例

 五、灵魂四问

1.如果try中没有遇到问题,怎么执行?

2.如果try中可能会遇到多个问题,怎么处理?

3.如果try中遇到的问题没有被捕获,怎么执行?

4.如果try中遇到了问题,那么try里面剩余的其他代码还会执行吗?

六、异常的常见方法

 七、抛出异常

八、try-finally 

1.格式

2.示例

3.finally代码不执行情况

 九、Demo

 


一、简介

编译时异常是提醒程序员检查本地信息

运行时异常是代码出错而导致的程序出现的问题,一般是参数传递错误出现

二、作用

1.用来查询bug的关键参考信息

2.可以作为方法内部的一种特殊返回值,以便通知调用者底层的执行情况

三、JVM默认处理异常方式 

把异常的名称,异常原因及异常出现的位置等信息输出在了控制台

程序停止执行,下面的代码不会再执行了

四、捕获异常

1.格式

在可能出现异常的地方使用

2.目的

当代码出现异常时,可以让程序继续往下执行 

 3.示例

 五、灵魂四问

1.如果try中没有遇到问题,怎么执行?

会把try里面所有的代码全部执行完毕,不会执行catch里面的代码

注意:只有当出现了异常才会执行catch里面的代码

2.如果try中可能会遇到多个问题,怎么处理?

会写多个catch与之对应

如果我们要捕获多个异常,这些异常中如果存在父子关系的话,那么父类一定要写在下面

了解:在JDK7之后,我们可以在catch中同时捕获多个异常,中间用 | 进行隔开

           表示如果出现了A异常或者B异常的话,采取同一种处理方案

示例代码

3.如果try中遇到的问题没有被捕获,怎么执行?

相当于try...catch的代码白写了,最终还是会交给虚拟机进行处理。即将异常信息打印到控制台,程序停止执行,下面的代码不会再执行了

4.如果try中遇到了问题,那么try里面剩余的其他代码还会执行吗?

下面的代码就不会执行了,直接跳转到对应的catch当中,执行catch里面的语句体

但是如果没有对应catch与之匹配,那么还是会交给虚拟机进行处理

示例

六、异常的常见方法

示例:

 

将异常以红色字体输出在控制台(System.err)

 七、抛出异常

示例

将异常抛出到方法使用处。抛出处要处理,抛出或捕捉

八、try-finally 

finally一般配合try-catch使用,关闭相关的流,用于处理资源回收和清理。

1.格式

try{//发生异常的代码
}catch(异常类型  e){//处理异常
}finally{//关闭相关流或输出信息
}

注意:无论try部分的代码有没有发生异常,finally部分的代码都会执行。

2.示例

public class FinallyTest {static int x = 1;static int y = 10;static int z = 100;public static void main(String[] args) {int value = finallyReturn();System.out.println("value=" + value);System.out.println("x=" + x);System.out.println("y=" + y);System.out.println("z=" + z);}private static int finallyReturn() {try {// 无异常return ++x;} catch (Exception e) {return ++y;} finally {return ++z;}}
}

上面的代码,try方法没有异常不会执行catch代码,执行完try,再执行finally,最后输出

value = 101,x=2,y=10,z=101

如果try出现异常,return ++x不执行,执行catch后执行finally,最后输出

value = 101 ,x=1 ,y=11, z=101

 

上面的代码示例输出都是“程序结束”,说明无论在try还是catch里面return,finally部分代码还是会执行,并且try-finally后面的代码不会执行 

3.finally代码不执行情况

A.没进入try部分代码

B.JVM崩溃:如果Java虚拟机崩溃(例如,由于操作系统故障或内存溢出),则finally块不会执行。

C.无限循环:如果在try块中存在无限循环,且没有跳出循环的条件,那么finally块将永远不会执行。

D.调用System.exit():如果在try块中调用了System.exit()方法,程序将立即终止,finally块不会执行。

 九、Demo

public class Test {public static void main(String[] args) {Dog dog = new Dog();Scanner sr = new Scanner(System.in);try {System.out.println("请输入狗的名字");String name = sr.next();dog.setName(name);System.out.println("请输入狗的年龄");int age = sr.nextInt();dog.setAge(age);} catch (InputMismatchException e) {System.out.println("输入的数据格式有误");} catch (RuntimeException e) {e.printStackTrace();}}
}
class Dog {private String name;private int age;public Dog() {}public Dog(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {if (name.length() < 2 || name.length() > 10) {throw new RuntimeException("名字的长度必须在2-10之间");}this.name = name;}public int getAge() {return age;}public void setAge(int age) {if (age < 0 || age > 20) {throw new RuntimeException("年龄必须在0-20之间");}this.age = age;}@Overridepublic String toString() {return "Dog{" +"name='" + name + '\'' +", age=" + age +'}';}
}

 十、自定义异常

1.格式

(1)定义异常类   注意:名字要见文知义

(2)写继承关系   继承RuntimeException就是运行时异常    继承Exception就是编译时异常 

(3)写无参构造器

(4)写有参构造器

看一个java底层实现好的定义异常,继承RuntimeException是运行时异常,有无参和有参构造器,异常类名也是明白作用。

创建自定义异常的意义:就是为了让控制台的报错信息更加的见名之意 即异常的名字

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

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

相关文章

分布式日志分析系统--ELK

文章目录 ELK概述ELK主要特点ELK应用架构 Elasticsearch原理JSON格式倒排索引 ES与关系型数据库ES相关概念ES安装说明1.环境初始化2.优化系统资源限制配置3.编辑ES服务文件elasticsearch. yml 优化ELK集群安装脚本scp的使用集群安装成功 Shell命令API使用创建索引创建Type创建分…

《从零开始:使用Python构建简单Web爬虫》

前言 随着互联网信息的爆炸性增长&#xff0c;如何高效地获取和处理这些数据变得越来越重要。Web爬虫作为一种自动化工具&#xff0c;可以帮助我们快速抓取所需的网页内容。本文将介绍如何使用Python编写一个简单的Web爬虫&#xff0c;并通过实例演示其基本用法。 准备工作 …

VMware安装Centos虚拟机使用NAT模式无法上网问题处理

NAT模式无法上网问题处理 Centos7与Ubuntu使用同一个NAT网络&#xff0c;Ubuntu正常访问互联网&#xff0c;Centos无法正常访问。 处理方案&#xff1a; cd /etc/sysconfig/network-scripts vi ifcfg-ens33 修改配置项&#xff1a; 重启网络&#xff1a; service network resta…

【源码阅读】Redisson lock源码

目录 底层原理 加锁机制 锁互斥机制 可重入锁机制 总结 Redisson 加锁非常简单&#xff0c;还支持 redis 单实例、redis 哨兵、redis cluster、redis master-slave 等各种部署架构 RLock lock redisson.getLock("cyk-test"); lock.lock(); lock.unlock(); 底…

华为路由常见 LSA 类型的产生及作用域和字段详细解读

华为路由常见 LSA 类型的产生及作用域 类型名称描述1路由器 LSA&#xff08;Router LSA&#xff09;每个设备都会产生&#xff0c;描述了设备的链路状态和开销。该 LSA 只能在接口所属的区域内泛洪2网络 LSA&#xff08;Network LSA&#xff09;由 DR 产生&#xff0c;描述该 …

第23集《大佛顶首楞严经》

请大家打开讲义第五十二页&#xff0c;癸八&#xff0c;约外道世谛对简显见性非因缘自然。 本经的修学特色&#xff0c;简单地讲&#xff0c;它是在处理生命的根本问题。就是当我们在行菩萨道的时候&#xff0c;我们会去布施、持戒、忍辱或者是禅定&#xff0c;在整个修学当中…

智慧水务项目(四)django(drf)+angular 18 添加drf_yasg api接口文档

一、说明 文档api接口是必须的 本来准备用coreapi&#xff0c;据说drf_yasg更流弊 二、步骤 1、requirements.txt添加drf-yasg 2、settings.py中添加部分代码 drf_yasg需要与django.contrib.staticfiles配套使用&#xff0c;一般情况下&#xff0c;项目创建都会在INSTALLE…

Javaweb用过滤器写防跳墙功能和退出登录

一、什么是防跳墙功能&#xff1a; 防跳墙功能通常指的是防止用户在未完成认证的情况下直接访问受保护资源的功能。在 Web 开发中&#xff0c;这种功能通常被称为“登录拦截”或“身份验证拦截”。 在 Spring MVC 中&#xff0c;实现这种功能通常使用的是“拦截器”&#xff08…

ASPCMS 漏洞

一、后台修改配置文件拿shell 登录后台后如下点击 点击保存并抓包 将slideTextStatus的值修改为1%25><%25Eval(Request(chr(65)))25><%25 放包&#xff08;连接密码是a&#xff09; 影响文件为 /config/AspCms_Config.asp 访问文件,使用工具连接

【WPF开发】安装环境、新建工程

一、安装环境 在安装VS时候&#xff0c;勾选安装开发环境 如果已安装VS&#xff0c;可以到工具中查看是否有相应环境 二、新建工程 点击“创建新项目” 通过顶部过滤&#xff0c;C#&#xff0c;选择“WPF应用&#xff08;NET.framework&#xff09;”&#xff0c;并点击“下一…

基于Java+SpringBoot+Vue的母婴商城

基于JavaSpringBootVue的母婴商城 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 哈喽兄弟们…

Datawhale AI 夏令营(2024第三期)AI+逻辑推理方向 模型微调学习笔记

如何基于开源大模型进行优化 1. Prompt工程 大模型可能知道问题相关&#xff0c;但是我们问的不清楚。所以需要根据我们的提问&#xff0c;构建出一个比较结构化的、大模型易于理解和分析的提问内容。 在下方的第二个资料里&#xff0c;我才知道有这么多Prompt的构建思路&…

1688中国站获得工厂档案信息 API

公共参数 名称类型必须描述keyString是免费申请调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_get,item_search_shop等]cacheString否[yes,no]默认y…

谷粒商城实战笔记-110~114-全文检索-ElasticSearch-查询

文章目录 一&#xff0c;110-全文检索-ElasticSearch-进阶-两种查询方式二&#xff0c;111-全文检索-ElasticSearch-进阶-QueryDSL基本使用&match_all三&#xff0c;112-全文检索-ElasticSearch-进阶-match全文检索四&#xff0c;113-全文检索-ElasticSearch-进阶-match_ph…

STM32F401VET6 PROTEUS8 ILI9341 驱动显示及仿真

stm32cubemx新建工程代码&#xff0c;并生成工程 设置gpio 设置SPI 其他的参考stm32默认设置 然后编辑驱动代码 ili9341.h #ifndef ILI9341_H #define ILI9341_H#include <stdbool.h> #include <stdint.h>#include "glcdfont.h" #include "stm32…

七大云安全威胁及其应对方法

关注公众号网络研究观获取更多内容。 对于任何依赖云来容纳快速增长的服务的企业来说&#xff0c;确保安全都是重中之重。然而&#xff0c;正如大多数云采用者很快意识到的那样&#xff0c;迁移到动态云环境需要新的和更新的安全措施&#xff0c;以确保数据和其他关键资产在整…

idea-springboot后端所有@注释含义汇总-持续更新!

&#xff08;1&#xff09;启动类 ①SpringBootApplication 出现这个代表这个就是整个程序的入口&#xff0c;是运行的开始位置 ②ComponentScan("com.example.dao.impl") 启动时自动扫描制定beans包 &#xff08;2&#xff09;mapper层&#xff08;Dao层&#xf…

反贿赂体系认证:企业诚信经营的护航者

在当今商业环境中&#xff0c;企业不仅要追求经济效益&#xff0c;更要坚守诚信经营的原则。反贿赂体系认证作为现代企业合规管理的重要手段&#xff0c;不仅提升了企业的道德形象&#xff0c;还为其市场竞争力注入了强劲动力。以下是反贿赂体系认证对企业的多方面益处。 首先&…

函数递归超详解!

目录 1.什么是递归调用&#xff1f; 直接调用 间接调用 2.什么是递归&#xff1f; 3.递归举例 3.1求n!的阶乘 3.1.1.非递归法 3.1.2.递归法 3.1.2.1分析和代码实现 3.2顺序打印一个整数的每一位 3.2.1分析和代码实现 4.递归与迭代 4.1举例&#xff1a;斐波那契数列 …

基于JSP的家用电器销售网站

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JSPJava 工具&#xff1a;ECLIPSE、MySQL数据库管理工具、Tomcat 系统展示 首页 个人中心 商品信…