Java异常的处理 try-catch-finally

目录

  • 什么是异常
  • 通过if-else处理异常
    • 用if-else堵漏洞的缺点
  • try-catch
      • 第一种处理
      • 第二种处理
      • 第三种处理
      • 第四种处理
  • try-catch-finally
  • System.exit(0);//终止当前的虚拟机执行

什么是异常

Exception:在程序的运行过程中,发生了不正常的现象,阻止了程序的运行,我们称之为发生异常。

import java.util.Scanner;public class Except01 {//这是一个main方法,是程序的入口:public static void main(String[] args) {//实现一个功能:键盘输入两个数,求商:Scanner sc = new Scanner(System.in);System.out.println("请输入第一个数:");int num1 = sc.nextInt();System.out.println("请输入第二个数:");int num2 = sc.nextInt();System.out.println("商:"+num1/num2);}}

在这里插入图片描述

通过if-else处理异常

import java.util.Scanner;public class Except02 {//这是一个main方法,是程序的入口:public static void main(String[] args) {//实现一个功能:键盘输入两个数,求商:Scanner sc = new Scanner(System.in);System.out.println("请输入第一个数:");if(sc.hasNextInt()){int num1 = sc.nextInt();System.out.println("请输入第二个数:");if(sc.hasNextInt()){int num2 = sc.nextInt();if(num2 == 0){System.out.println("对不起,除数不能为0");}else{System.out.println("商:"+num1/num2);}}else{System.out.println("对不起,你输入的不是int类型的数据!");}}else{System.out.println("对不起,你输入的不是int类型的数据!");}}
}

在这里插入图片描述

用if-else堵漏洞的缺点

  1. 代码臃肿,业务代码和处理异常的代码混在一起。
  2. 可读性差
  3. 程序员需要花费大量的经历来维护这个漏洞
  4. 程序员很难堵住所有的漏洞。

try-catch

在Java中,try-catch语句用于处理异常。当程序中可能出现异常时,可以使用try-catch语句来捕获并处理这些异常,以避免程序崩溃或出现不可预料的行为。

try-catch语句的基本语法如下:

try {// 可能会抛出异常的代码块
} catch (ExceptionType1 e1) {// 处理异常类型为ExceptionType1的代码块
} catch (ExceptionType2 e2) {// 处理异常类型为ExceptionType2的代码块
}

在try代码块中,编写可能会抛出异常的代码。如果在try代码块中发生异常,控制流将转到相应的catch代码块。每个catch代码块处理一种特定的异常类型。如果没有找到匹配的catch代码块,则程序将终止。

import java.util.Scanner;public class Except03 {public static void main(String[] args) {//实现一个功能:键盘输入两个数,求商:try{Scanner sc = new Scanner(System.in);System.out.println("请输入第一个数:");int num1 = sc.nextInt();System.out.println("请输入第二个数:");int num2 = sc.nextInt();System.out.println("商:"+num1/num2);}catch(Exception ex){//第一种处理:什么都不写,什么都不做//第二种处理:输出自定义异常信息//System.out.println("对不起,你的代码有问题!");//第三种处理:打印异常信息:/*(1)调用toString方法,显示异常的类名(全限定路径)*//*System.out.println(ex);System.out.println(ex.toString());*//*(2)显示异常描述信息对应的字符串,如果没有就显示nullSystem.out.println(ex.getMessage());*//*(3)显示异常的堆栈信息:将异常信息捕获以后,在控制台将异常的效果给我们展示出来,方便我们查看异常*//* ex.printStackTrace();*///第四种处理:抛出异常:throw ex;}System.out.println("----谢谢你使用计算器");}
}

第一种处理

在这里插入图片描述

第二种处理

在这里插入图片描述

第三种处理

在这里插入图片描述

第四种处理

在这里插入图片描述

try-catch-finally

除了try-catch语句之外,还可以使用finally代码块来确保无论是否发生异常,都会执行某些操作。finally代码块的语法如下:

try {// 可能会抛出异常的代码块
} catch (ExceptionType1 e1) {// 处理异常类型为ExceptionType1的代码块
} catch (ExceptionType2 e2) {// 处理异常类型为ExceptionType2的代码块
} finally {// 无论是否发生异常都会执行的代码块
}


import java.util.Scanner;public class Except04 {public static void main(String[] args) {//实现一个功能:键盘录入两个数,求商:try{Scanner sc = new Scanner(System.in);System.out.println("请录入第一个数:");int num1 = sc.nextInt();System.out.println("请录入第二个数:");int num2 = sc.nextInt();System.out.println("商:"+num1/num2);System.exit(0);//终止当前的虚拟机执行return;}catch(ArithmeticException ex){throw ex;}finally {System.out.println("----谢谢你使用计算器");}}
}

在这里插入图片描述
在这里插入图片描述

System.exit(0);//终止当前的虚拟机执行

它可以让finally中代码不执行

在这里插入图片描述

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

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

相关文章

SpringCloud-Ribbon实现负载均衡

在微服务架构中,负载均衡是一项关键的技术,它可以确保各个服务节点间的负载分布均匀,提高整个系统的稳定性和性能。Spring Cloud 中的 Ribbon 就是一种负载均衡的解决方案,本文将深入探讨 Ribbon 的原理和在微服务中的应用。 一、…

12 ABC串口接收原理与思路

1. 串口接收原理 基本原理:通过数据起始位判断要是否要开始接收的数据,通过采样的方式确定每一位数据是0还是1。 如何判断数据起始位到来:通过边沿检测电路检测起始信号的下降沿 如何采样:一位数据采多次,统计得到高…

curl8.6.0 - CURLE_PEER_FAILED_VERIFICATION

文章目录 curl8.6.0 - CURLE_PEER_FAILED_VERIFICATION概述笔记END curl8.6.0 - CURLE_PEER_FAILED_VERIFICATION 概述 在看一个开源工程, 里面用到了curl和openssl, 但是工程使用vcpkg来管理的包, 用CMake来编译 依赖太多了, win10 编译选项为 vs2019 x64/Win32(或者Ninja)…

肯尼斯·里科《C和指针》第12章 使用结构和指针(1)链表

只恨当时学的时候没有读到这本书,,,,,, 12.1 链表 有些读者可能还不熟悉链表,这里对它作一简单介绍。链表(linked list)就一些包含数据的独立数据结构(通常称为节点)的集…

有关网络安全的课程学习网页

1.思科网络学院 免费学习skillsforall的课程 课程链接:Introduction to Cybersecurity by Cisco: Free Online Course (skillsforall.com) 2.斯坦福大学计算机和网络安全基础 该证书对于初学者来说最有价值,它由最著名的大学之一斯坦福大学提供。您可…

小游戏和GUI编程(3) | 基于 SFML 的字符阵

小游戏和GUI编程(3) | 基于 SFML 的字符阵 1. 简介 使用 EasyX 图形库时, 官方第一个例子是字符阵。 EasyX 不开源, 也不能跨平台, API 陈旧, API 是 C 而不是 C。 现在使用 SFML 来实现字符阵, 克服 EasyX 的这些问…

Java:Arrays类、Lambda表达式、JDK新特性(方法引用) --黑马笔记

一、Arrays类 1.1 Arrays基本使用 Arrays是操作数组的工具类,它可以很方便的对数组中的元素进行遍历、拷贝、排序等操作。 下面我们用代码来演示一下:遍历、拷贝、排序等操作。需要用到的方法如下: public class ArraysTest1 {public stat…

深度学习(13)--PyTorch搭建神经网络进行气温预测

一.搭建神经网络进行气温预测流程详解 1.1.导入所需的工具包 import numpy as np # 矩阵计算 import pandas as pd # 数据读取 import matplotlib.pyplot as plt # 画图处理 import torch # 构建神经网络 import torch.optim as optim # 设置优化器 1.2.读取并处理数据…

清平乐-春风丽日

今天,是2024年农历除夕日,远方家人已于昨夜风尘扑扑地倦鸟归巢,团聚过龙年,今晨酣睡未起。老龄笔者心情极佳,一夜好梦醒来,推窗仰头展望苍穹,喜上心头:啊!接连几天的小雨…

《乱弹篇(十二)聊春晚》

龙年大初一,老龄笔者发表《乱弹篇(十二)》。“十二”的标志,乃好事成双“二”。喜庆有余,自不待言! 除夕夜我没有看春晚,是在继续追剧,即以明朝宫廷内斗为背景的电视连续剧《后宫》…

【医学大模型 尘肺病】PneumoLLM:少样本大模型诊断尘肺病新方法

PneumoLLM:少样本大模型诊断尘肺病新方法 提出背景PneumoLLM 框架效果 提出背景 论文:https://arxiv.org/pdf/2312.03490.pdf 代码:https://github.com/CodeMonsterPHD/PneumoLLM/tree/main 历史问题及其背景: 数据稀缺性问题&a…

CleanMyMac2024智能算法有哪些优点和缺点?

CleanMyMac的智能算法在识别和清理垃圾文件方面具有一些明显的优点和缺点。cleanmymac是我必装的mac端清理软件,界面简洁好看,完美适配mac系统,文件清理的速度、精度都比较优秀,还是比较不错的呢。cleanmymac作为一款第三方清洁应…

ARP欺骗攻击利用之内网截取图片

Arp欺骗:目标ip的流量经过我的网卡,从网关出去。 Arp断网:目标ip的流量经过我的网卡 1. echo 1 >/proc/sys/net/ipv4/ip_forward 设置ip流量转发,不会出现断网现象 有时不能这样直接修改,还有另外一种方法 修…

图书商城系统

文章目录 图书商城系统一、项目演示二、项目介绍三、系统部分功能截图四、部分代码展示五、底部获取项目(9.9¥带走) 图书商城系统 一、项目演示 网上书城 二、项目介绍 基于SSM的图书商城网站 运行环境:idea或eclipse 数据库:mysql 开发语…

在面试中如何回复擅长vue还是react

当面试官问及这个问题的时候,我们需要思考面试官是否是在乎你是掌握vue还是react吗??? 在大前端的一个环境下,当前又有AI人工智能的加持辅助,我们是不是要去思考企业在进行前端岗位人员需求的时候&#xf…

骨科器械行业分析:市场规模为360亿元

骨科器械一般指专门用于骨科手术用的专业医疗器械。按国家食品药品监督局的分类划分常分为:一类;二类和三类。按照使用用途和性能主要分为骨科用刀、骨科用剪、骨科用钳、骨科用钩、骨科用针、骨科用刮、骨科用锥、骨科用钻、骨科用锯、骨科用凿、骨科用锉/铲、骨科…

Github 2024-02-04 开源项目日报 Top9

根据Github Trendings的统计,今日(2024-02-04统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目6Ruby项目1HTML项目1C项目1Go项目1TypeScript项目1 Windows 终端、控制台和命令行存储库 创建周期…

数据库管理-第148期 最强Oracle监控EMCC深入使用-05(20240208)

数据库管理148期 2024-02-08 数据库管理-第148期 最强Oracle监控EMCC深入使用-05(20240208)1 性能主页2 ADDM Spotlight3 实时ADDM4 数据库的其他5 主机总结 数据库管理-第148期 最强Oracle监控EMCC深入使用-05(20240208) 作者&am…

跨平台监控管理工具ServerBee

大年初一,给各位拜年,恭祝大家龙年大吉,新春快乐~! 本文是应网友 博茨瓦纳 的要求折腾的; 什么是 ServerBee ? ServerBee 是一款支持跨平台集监控、管理和终端的效率工具,支持 Linux 、Windows …

微信小程序 民宿预订租赁系统uniApp

通过山青水磨APP办理租房相关业务,线上解决预定、退订的业务,旅客在使用时更加灵活,实现了快速找房,在线沟通、便捷租赁等操作,除此以外,还能帮助旅客获取周边资讯、当地特色活动服务,提升旅客的…