Java进阶-异常处理

概述

常见运行时异常

  • 直接继承自RuntimeException或者子类,编译阶段不会报错,运行时可能出现的错误

运行时异常:一般是程序员业务没有考虑好或者是编程逻辑不严谨引起的程序错误

  • 数组索引越界异常
  • 空指针异常
  • 类型转换异常
  • 数学操作异常
  • 数字转换异常 

常见编译时异常

  • 不是RuntimeExeption或者子类的异常,编译就报错,必须处理,否则代码不通过

异常的默认处理流程

 编译时异常的处理机制

编译时异常是编译阶段就出错的,所以必须处理,否则代码无法通过

方式一:throws

 注:一个方法内部可能有很多个异常,但是最终只会抛出一个异常,就看谁先出现了!

方式二:try...catch...

方式三:前两者结合

在开发中第三种方式是最好的,底层异常抛出去给最外层,最外层集中捕获处理。

运行时异常的处理机制

可以不处理,建议处理一下,只需要在最外层捕获处理就可以

案例

代码参考

public class Test2 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while(true){try {System.out.println("请你输入合法的价格:");String priceStr = sc.nextLine();//转成double类型的数据double price = Double.valueOf(priceStr);//判断价格是否大于0if (price > 0){System.out.println("价格:"+price);break;}else {System.out.println("价格必须是正数!");}} catch (Exception e) {System.out.println("用户输入的数据有问题,请输入合法数值!");e.printStackTrace();}}}
}

自定义异常

补充:throw和throws的区别

throw:在方法内部直接创建一个异常对象,并抛出

throws:用在方法申明上,抛出方法内部的异常

自定义编译时异常

自定义运行时异常

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

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

相关文章

离线语音模块初步学习——LSYT201B(深圳雷龙发展)

一 、产品简介 首先简单介绍下该离线语音模块,官方给出的介绍是:YT2228 是根据智能语音交互市场需求及思必驰算法的发展方向定义开发的 “芯片算法”人工智能人机语音交互解决方案,具有高性能、低功耗等特点。该芯片通过软硬融合的方法&…

数据丢失的谜团:文件突然不见了,却还占用着空间

在数字化时代,数据的重要性不言而喻。然而,有时我们会遇到一个令人困惑的问题:明明存储在设备中的文件突然不见了,但磁盘空间仍被占用。这种情况究竟是怎么回事?我们又该如何找回这些“消失”的文件呢?接下…

微服务(学习)

1.Spring Cloud 5大组件有哪些? 一般认为的Spring Cloud五大组件是 Eureka / nacos : 注册中心 Ribbon : 负载均衡 Feign : 远程调用 Hystrix : 服务熔断 Zuul/Gateway : 网关2.服务注册和发现是什么意思?Spring Cloud 如何实现服务注册发现&…

ROS python实现乌龟跟随

产生两只乌龟,中间的乌龟(A) 和 左下乌龟(B), B 会自动运行至A的位置,并且键盘控制时,只是控制 A 的运动,但是 B 可以跟随 A 运行 乌龟跟随实现的核心,是乌龟A和B都要发布相对世界坐标系的坐标信息,然后&am…

vue3组件 描点定位以及监听滚动切换对应activeTab

描点定位以及监听滚动切换对应activeTab 基本逻辑 init 初始化 获取滚动区域内所有非文本子节点offsetTopArr 存储所有子节点的高度scroll 监听滚动的距离&#xff0c;找到还在可视区的元素高度 <template><div class"tab-list"><div v-for"i…

力扣HOT100 - 994. 腐烂的橘子

解题思路&#xff1a; 因为要记录轮数&#xff08;分钟数&#xff09;&#xff0c;所以不能一口气遍历到底&#xff0c;所以不能用深搜&#xff08;bfs&#xff09;&#xff0c;而要用广搜&#xff08;bfs&#xff0c;层序遍历&#xff09;。 先记录下新鲜橘子数&#xff0c;…

理解控制反转

好久之前写的学习笔记&#xff0c;一直落在草稿箱里今天才发现&#xff0c;既然写了就补发出来吧~ 当需要实现不同操作时&#xff0c;用户和程序员都无需修改&#xff0c;只需要修改xml配置即可。 代码体现&#xff1a; 不同接口的实现类&#xff1a; xml具体配置 通过set注入…

GO语言写Prometheus自定义node-exporter的Docker容器测试

1. 安装docker-compose 执行以下命令&#xff0c;安装docker-compose到CentOS7.9环境中&#xff1a; # 下载二进制文件 sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.7/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/d…

后端面试---分布式微服务

分布式&微服务 分布式1、什么时候用到分布式开发三级目录 微服务 分布式 1、什么时候用到分布式开发 三级目录 微服务 1、谈谈你对微服务的理解&#xff0c;什么时候用微服务 2、若A服务请求B服务B1接口&#xff0c;B1接口又请求A服务的A2接口&#xff0c;会不会有问题…

Qt : 在QTreeWidget中添加自定义右键菜单

一、引言 如图&#xff0c;我们需要在一个QTreeWidget 控件中添加了自定义右键菜单。 二、思路 如何做到的呢&#xff0c;很简单。浅浅记录和分享一下。 继承QTreeWidget&#xff0c;定义一个子类CustomTreeWidget &#xff0c;在重写contextMenuEvent 事件即可。 三、代…

单链表(详解)

目录 一.链表的介绍二.链表的各种方法单链表的结构初始化链表为链表开辟新节点打印链表尾插头插尾删头删查找指定位置之前插入指定位置之后插入删除(pos)节点删除节点&#xff08;pos&#xff09;之后的节点链表的销毁&#xff08;节点被一个一个地销毁&#xff09; 一.链表的介…

linux调试-访问物理地址

1. devmem 方式 rootraspberrypi:/home/niyu# busybox devmem 0x7e215000 8 0xa rootraspberrypi:/home/niyu# busybox devmem 0x7e215000 8 0x0A rootraspberrypi:/home/niyu# busybox devmem 0x7e215000 8 0xb rootraspberrypi:/home/niyu# busybox devmem 0x7e21500…

如何制作个性又美观的二维码?自定义Logo、样式,还能一键复用

草料二维码提供基础的二维码美化设置&#xff0c;包含Logo、颜色、码点码眼、容错、添加文字等设置。 还提供150标签样式&#xff0c;标签样式中所有内容&#xff0c;包括LOGO、背景、字段数量等&#xff0c;均可修改。 同时&#xff0c;支持将样式保存到账号下&#xff0c;方…

磨损对输送带安全的影响

磨损对输送带安全的影响 在工业生产中&#xff0c;输送带作为重要的物流传输设备&#xff0c;广泛应用于煤炭、化工、冶金、电力、建材等多个行业。然而&#xff0c;输送带在使用过程中不可避免地会出现磨损现象&#xff0c;这不仅会影响其使用寿命&#xff0c;还可能对生产安…

vue-router学习3:路由传参方式

路由传参的方式主要有两种&#xff1a;query传参和params传参。 1. Query 传参 首先&#xff0c;在路由配置文件中&#xff08;通常是 router/index.ts&#xff09;&#xff0c;定义你的路由&#xff1a; import { createRouter, createWebHistory } from vue-router; imp…

从递归角度串联二叉树-图论-动态规划

一、深度理解二叉树的前中后序遍历 二叉树遍历框架如下&#xff1a; void traverse(TreeNode* root) {if (root nullptr) {return;}// 前序位置traverse(root->left);// 中序位置traverse(root->right);// 后序位置 }先不管所谓前中后序&#xff0c;单看 traverse 函数…

常见的工业路由器访问问题

A&#xff1a;工业路由器已经设置了pptp怎么访问路由下面的电脑 1. 确认PPTP VPN设置&#xff1a;首先&#xff0c;确保PPTP VPN服务器在工业路由器上已正确设置&#xff0c;并且处于活动状态。这包括确保VPN服务器的IP地址、端口、用户名和密码等设置正确无误。 2. 连接到VP…

硬件24、嘉立创EDA丝印的优化和调整

1、调整全部丝印的属性 先选中一个丝印&#xff0c;然后右键点击它&#xff0c;选择查找&#xff0c;然后选择查找全部 选择查找全部这个时候可以设置所有丝印在元件的位置了&#xff0c;布局-》属性位置&#xff0c;位号&#xff0c;属性位置设置为上边&#xff0c;这时丝印就…

Linux红帽(RHCE)认证学习笔记 - (2)用户组和用户的管理

二、用户组和用户密码和用户组密码管理 ⽤户的添加(useradd) ⽤户的删除(userdel) ⽤户的修改(usermod) ⽤户的查看(查看/etc/passwd) id用户信息都是存放在 /etc/passwd 用户密码都是存放在 /etc/shadow 用户组信息都是存放在 /etc/group 用户组密码都是存放在 /etc/…

五、yolov8 tensorRT c++部署及接口封装(保姆级教程附源码)

采用 CTensorRT来部署深度学习模型有以下几个优点&#xff1a; 高性能推理&#xff1a;TensorRT是一个高性能的深度学习推理&#xff08;Inference&#xff09;优化器&#xff0c;专门为NVIDIA GPU硬件平台设计&#xff0c;能够提供低延迟、高吞吐量的模型推理性能。这意味着在…