java学习---异常

前言

由于被分母不能为0,所以代码到int y=n/m;会抛出异常,停止运行下去,但是如果是个庞大的代码,因为这种小错误而整个程序崩溃,会大大影响代码整体的健壮性,所以此时就需要我们得异常处理了

选中异常代码部分再使用ctrl+alt+t再选中try catch即可快捷异常处理

进行异常处理,就算出现异常也会接着执行如果不想看到报错。那么可以使用getmessage()方法接收错误然后打印出来

基本概念

Throwable实现了Serializable继承了Object,Throwable分为两类,Error和Exception,Error错误一旦发生无法使用异常处理解决,

运行异常

编译异常:

例题

try-catch处理机制

当f2方法出现异常,他就会通过throws抛出异常到调用它的f1,f1可以使用try-catch-final(没有final语法也是通过的)

处理异常,也可以抛出异常到调用它的main方法,main方法也可以选择使用try-catch-final处理异常,也可以抛出异常到JVM,如果到jvm就会到直接挂掉程序抛出错误

需要注意的是,如果没有写明是使用throws还是try-catch-final,他会磨人使用throws

try-catch异常处理

实例一

示例2

示例3

示例4

因为这段有两段异常,谁在前就报出谁的异常并且停止后面代码运行,所以此时打印出null异常信息就结束,不会到达下面的算数异常,如果,前面指针无异常那么就会到达算数异常,如果两个都异常并且想要他把异常信息都能打印出来那么就需要分开都使用catch接收一下如图

此时此刻可以都catch到异常,另外值得注意的是,父类Exception必须在其子类NUllPointerException,ArithmeticException后面,否则报错如图:

示例5:

这个发现异常,没有catch所以不会执行最后那句,执行完final就崩了

例题:

他先来到if(names[1].equals(“tom”),由于Sting数组并无赋值,随意每位元素都是null的,所以在此会报出NUllpointerException错误,然后直接来到catchNUllPointException那执行return 3,但是值得注意的是,final里的代码是必须执行的所以,必须在return 3时进入了final中运行里面的代码,最终返回了return4

该例题也是返回四,前面都是一个道理到NullPointerException,到return那不会立即返回,但是会执行++i的动作再进入final中的代码执行return++i

例题3

他到return++i;时,不会立即return出去,而是将i的值放到一个临时变量中存起来再去执行final中的代码,执行完之后再回到return那,拿上存在临时变量中的值返回回去,所以还是3

throws异常处理

示例2:

throws后除了就写该错误的异常FileNotFoundException,也可以写该错误类型的父类,Exception,也可以抛出多个异常,如图所示

示例3:如图,父类抛出的RuntimeException也是其类的子类抛出的NUllPointerException的子类,

子类抛出的要么是父类抛出的子类要么同一个

注意:

当一个方法调用了一个需要异常处理的方法且还不是运行异常,那么该方法就需要给调用的方法给出一种异常处理的方案,要么使用try-catch-final,要么使用throws。详情原因可以看到throws处理机制

如果是调用的是抛出运行异常的方法就无需在该方法中也要给一种处理方法,因为会默认处理

自定义异常

步骤:

新建一个类继承运行异常/编译异常,最后继承运行异常,因为运行异常会自己处理异常很方便

然后创建构造器,按要求自己选择

zai再然后就是去使用了,我们新建一个我们刚创建得自定义异常类,然后传入报错后需要前提的东西,然后再throw抛出就可以实现自定义异常操作了,其实从构造器不难看出。就是去调运父类的异常处理方式罢了

例题

先输出进入方法a然后他又抛出异常,但因为有final的原因没所以我们需要先执行final的代码再到外部去,那么这时就会被main中调用该方法时的异常处理中的catch接收并执行打印,后面同理可得

package com.abnormal.test02;/*
@author:我与java相爱相杀---c语言梦开始的地方
今天又是努力学习的一天!!!!
编写应用程序EcmDef.java,接收命令行的两个参数(整数),计算两数相除。
计算两个数相除,要求使用方法cal(int n1,int n2)
对数据格式不正确(NumberformatException)、缺少命令行参数
(ArraylndexOutOfBoundsException)、除0进行异常处理(ArithmeticException)。
*/public class calculate {public static void main(String[] args) {//我们是直接输入数给main方法的形参数组String args[]//所以至此,可以判断一下输入的数是否是两个,超过就用throw抛出错误try {if (args.length!=2){throw new ArrayIndexOutOfBoundsException("参数个数不对");}//由于我们得args数组为字符串数组,所以存放的类型也是字符型的,所以需要将他们类型转换一下int a=Integer.parseInt(args[0]);int b=Integer.parseInt(args[1]);int red=caculate_(a,b);//调用方法} catch (ArrayIndexOutOfBoundsException e) {System.out.println(e.getMessage());}catch (NumberFormatException e){System.out.println("格式不对");}catch (ArithmeticException e){System.out.println("出现除0的情况");}}static int  caculate_(int a,int b){return a/b;}
}

例题;

因为o向下转型为字符串了当然无法强转成Integer

因为,final必须执行所以输出了B,然后因为调用的方法他抛出了异常,。所以后面的那句代码不再执行,直接来到打印C的代码,输出C然后又因为这段代码已经通过try-catch异常处理了。所以程序会继续执行,最后输出D

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

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

相关文章

运维上云/直播上云EasyNVS视频上云管理平台配置域名时的注意事项

EasyNVS视频上云管理平台拥有完整的视频流媒体服务能力和运维管理服务能力,不仅可以通过平台对EasyNVR、EasyGBS进行统一管理,还能解决设备现场没有固定公网IP却需要在公网直播的需求。 有用户反馈,在项目现场配置了EasyNVS的HTTPS证书&#…

UGUI优化篇--UGUI合批

UGUI合批 UGUI合批规则概述UGUI性能查看工具合批部分的特殊例子一个白色image、蓝色image覆盖了Text,白色image和Text哪个先渲染 Mask合批Mask为什么会产生两个drawcallMask为什么不能合批Mask注意要点 RectMask2D为什么RecMask2D比Mask性能更好主要代码RectMask2D注…

Python 爬虫入门(一):从零开始学爬虫 「详细介绍」

Python 爬虫入门(一):从零开始学爬虫 「详细介绍」 前言1.爬虫概念1.1 什么是爬虫?1.2 爬虫的工作原理 2. HTTP 简述2.1 什么是 HTTP?2.2 HTTP 请求2.3 HTTP 响应2.4 常见的 HTTP 方法 3. 网页的组成3.1 HTML3.2 CSS3.…

vue3知识

目录 基础vue开发前的准备vue项目目录结构模板语法属性绑定条件渲染列表渲染通过key管理状态事件处理事件传参事件修饰符数组变化侦测计算属性Class绑定style绑定侦听器表单输入绑定模板引用组件组成组件嵌套关系组件注册方式组件传递数据Props(父传子)组件传递多种数据类型组件…

电影院售票网站

你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。 开发语言:Java 数据库:MySQL 技术:SSM框架 工具:IDEA/Eclipse、Navicat、Maven 系统展示 首页 用户管理界面 正在上映管…

Vue---vue3+vite项目内使用devtools,快速开发!

背景 我们在前期开发时,一般使用chrome或者edge浏览器,会使用vue-devtools或react-devtools(此插件个人未使用,可百度下是否可内嵌入项目!)来审查vue项目;这个需要安转浏览器插件才可支持&…

大模型llama结构技术点分享;transformer模型常见知识点nlp面经

1、大模型llama3技术点 参考:https://www.zhihu.com/question/662354435/answer/3572364267 Llama1-3,数据tokens从1-2T到15T;使用了MHA(GQA缓存);上下文长度从2-4-8K;应用了强化学习对其。 1、pretraini…

RedHat9 | Ansible 处理任务失败

环境版本说明 RedHat9 [Red Hat Enterprise Linux release 9.0]Ansible [core 2.13.3]Python [3.9.10]jinja [3.1.2] 1. 忽略任务失败 Ansible评估各任务的返回代码,从而确定任务是成功还是失败通常而言,当任务失败时,Ansible将立即在该主…

可以免费合并pdf的软件 合并pdf文件的软件免费 合并pdf的软件免费

在数字化办公的今天,pdf格式因其稳定性和跨平台兼容性被广泛使用。然而,当我们需要将多个 pdf 文件合并为一个时,却往往感到力不从心。本文将为你介绍几款强大的pdf文件合并软件,让你轻松管理文档。 方法一、使用pdf转换器 步骤1…

爬虫 APP 逆向 ---> 粉笔考研

环境: 粉笔考研 v6.3.15:https://www.wandoujia.com/apps/1220941/history_v6031500雷电9 模拟器:https://www.ldmnq.com/安装 magisk:https://blog.csdn.net/Ruaki/article/details/135580772安装 Dia 插件 (作用:禁…

后端开发刷题 | 笔试

Linux 中,下面哪个选项不是 inode 中记录的数据() A 最后一次读取时间 B 最近修改的时间 C 该文件的实际内容 D 该文件的容量 正确答案:C 解析:储存文件的元信息,比如文件的创建者、文件的创建日期、文件的…

MySQL-视图、存储过程和触发器

一、视图的定义和使用 视图是从一个或者几个基本表(或视图)导出的表。它与基本表不同,是一个虚表,视图只能用来查询。不能做增删改查(虚拟的表) 1.视图的作用 简化查询重写格式化数据频繁访问数据库过滤数据 2.创建视图 -- 创建视图 -- 语法…

【MATLAB APP】建立独立桌面APP

背景:已有MATLAB APP的.mlapp文件,但客户提出需要可以直接使用的exe文件。 要求:点开即用,无需下载MATLAB。使用者无法修改APP的代码。 一、环境配置 APP创建者:安装MATLAB R2023a,配置Application Compile…

【开源库编译 | zlib】 zlib库最新版本(zlib-1.3.1)在Ubuntu(Linux)系统下的 编译 、交叉编译(移植)

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

通信原理-实验六:实验测验

实验六 实验测验 一:测验内容和要求 测试需要完成以下几个步骤: 配置好以下网络图;占总分10%(缺少一个扣一分)根据下面图配置好对应的IP和网关以及路由等相关配置,保证设备之间连通正常;占总…

【学一点儿前端】本地或jenkins打包报错:getaddrinfo ENOTFOUND registry.nlark.com.

问题 今天jenkins打包一个项目,发现报错了 error An unexpected error occurred: "https://registry.nlark.com/xxxxxxxxxx.tgz: getaddrinfo ENOTFOUND registry.nlark.com". 先写解决方案 把yarn.lock文件里面的registry.nlark.com替换为registry.npmmi…

【计算机网络】期末实验答辩

注意事项: 1)每位同学要在下面做过的实验列表中选取三个实验进行答辩准备,并将自己的姓名,学号以及三个实验序号填入共享文档"1(2)班答辩名单"中。 2)在答辩当日每位同学由老师在表…

【React】事件绑定:深入解析高效处理用户交互的最佳实践

文章目录 一、什么是事件绑定?二、基本事件绑定三、绑定 this 上下文四、传递参数五、事件对象六、事件委托七、常见事件处理八、优化事件处理 React 是现代前端开发中最受欢迎的框架之一,其组件化和高效的状态管理能力使得构建复杂的用户界面变得更加容…

**卷积神经网络典型CNN**

SeNet SeNet(Squeeze-and-Excitation Networks)是ImageNet 2017年分类任务冠军,核心思想是:Squeeze(挤压、压缩)和Excitation(激励)两个操作,其主要目的是通过显示的构建特征通道之间的相互依赖关系,采用特征重定向的策略&#x…

光明乳业:以科技赋能品质,引领乳业绿色新未来

近日,光明乳业再次成为行业焦点,其在科技创新与绿色发展方面的卓越表现赢得了广泛赞誉。作为中国乳制品行业的领军企业,光明乳业始终坚守品质至上的原则,不断探索科技创新之路,致力于为消费者提供更高品质、更健康的乳…