添砖Java(十二)——异常,异常捕获,常见异常方法

异常:

定义:异常通俗来讲,其实就是你写出bug来了,编译器给你报错了。

    public static void main(String[] args)throws Exception {int z=10/0;}

 这个代码虽然说是可以运行,但是编译器会报错。

因为10不能去除以0。

异常分为两种,一种是运行时异常,另一种时编译时异常(就是运行到那就不会再运行了),然后异常都是一个类异常new出来的对象我们去接收就行了。

首先我们要知道异常类最大的爹是Exception,然后往下细分出很多,这里不举例api文档有。

编译时异常:

跟这个差不多。

捕获异常:

我们一个是发现了异常并解决异常(温柔的方式)。另一种是直接让你编译时异常(暴力的方式),让你程序直接崩掉,有点像c++中的assert。

温柔的方式:

我们需要将可能出现异常的代码写在try里边然后再用catch去捕获异常

        try {int i=10/0;//出现异常会去new一个异常类}catch (RuntimeException e) //e去捕获了new出来的异常类{System.out.println("10不能去除以0");//打印为什么错了}

这个方法不会让你的程序停止,会继续运行。

暴力的方式:

暴力的方式就是我们向上抛出异常

这个图应该很形象,但是这是编译器自己弄识别的,但是我们也可以自己去创建一个异常。

我们就来举个栗子:首相我们来个场景,我们需要去获取一个0-120的年龄,由用户自己输入,然后如果输入错了就直接抛出异常并终止程序。

    public  static void get(int a)throws  Exception//2.去获取到异常{if(a>=0&&a<=120){}else {throw new Exception("请输入0-120的数字");//1.创建一个异常向上抛出}}public static void main(String[] args) throws Exception{    //4.获取主方法代码存在的异常Scanner sc=new Scanner(System.in);get(sc.nextInt());//3.获取到了异常并且抛出异常}

因为这个异常时一级一级传的,最终要到jvm里边,所以我们需要这样写。这就是另一种场景,但是作为用户你不想让程序崩掉,想以温柔的方式提醒,并且改正,这时候需要怎么办呢?

我们就可以这样设计:

    public  static void get(int a)throws  Exception{if(a>=0&&a<=120){}else {throw new Exception("请输入0-120的数字");}}public static void main(String[] args){Scanner sc=new Scanner(System.in);while(true){try {get(sc.nextInt());//去get一个年龄break;            //get到了就退出循环} catch (Exception e) {System.out.println("请重新输入");}}}

这种方法还是非常喵~的。最简单的两种方法就搞好了。
 

常见异常方法:

getMessage:

就是返回你带参构造的那串字符,所以我们就可以这样用了

打印的就是你传入的字符。

printStackTrace:

就是打印原本的异常(就是红字的那种异常),并且不让你的程序崩掉。举个栗子:

还需运行下面的代码

自定义异常:

我们其实也可以去写一个异常类,比如我们在get年龄的时候我们可以自己去造一个,这样也可以提高代码的可读性。

class getageException extends RuntimeException//继承运行异常类
{public getageException() {}public getageException(String message) {super(message);}
}public class exception {public  static void get(int a)throws  Exception{if(a>=0&&a<=120){}else {throw new getageException("请输入0-120的数字");}}public static void main(String[] args) throws Exception{Scanner sc=new Scanner(System.in);while(true) {try {get(sc.nextInt());break;} catch (getageException e) {System.out.println(e.getMessage());}}}
}

其实我感觉有点鸡肋在这种场景,写法上有点装b,你为什么不直接用个循环呢?

比如这样写:

但是你不得不承认,他在z=10/0;这种场景很好用!~

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

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

相关文章

【C++】:vector容器的底层模拟实现迭代器失效隐藏的浅拷贝

目录 &#x1f4a1;前言一&#xff0c;构造函数1 . 强制编译器生成默认构造2 . 拷贝构造3. 用迭代器区间初始化4. 用n个val值构造5. initializer_list 的构造 二&#xff0c;析构函数三&#xff0c;关于迭代器四&#xff0c;有关数据个数与容量五&#xff0c;交换函数swap六&am…

C# 数组/集合排序

一&#xff1a;基础类型集合排序 /// <summary> /// 排序 /// </summary> /// <param name"isReverse">顺序是否取反</param> public static void Sort<T>(this IList<T> array, bool isReverse false)where T : IComparable …

Instagram运营必备工具合集

Instagram的运营不仅仅涉及数据分析&#xff0c;还包括内容规划、发布管理、互动提升和广告优化等多个方面。以下是一些海外社媒Instagram运营必备的工具&#xff0c;这些工具可以帮助您更有效地管理和提升您的Instagram账号。 Instagram 运营必备工具合集 数据分析工具 1、Ins…

10种排序算法总结-(c语言实现与动画演示)

算法分类 十种常见排序算法可以分为两大类&#xff1a; 比较类排序&#xff1a;通过比较来决定元素间的相对次序&#xff0c;由于其时间复杂度不能突破O(nlogn)&#xff0c;因此也称为非线性时间比较类排序。非比较类排序&#xff1a;不通过比较来决定元素间的相对次序&#…

什么叫USDT(泰达币)的前世今生!

一、引言 在数字货币的世界里&#xff0c;USDT&#xff08;Tether USDT&#xff09;以其独特的稳定机制&#xff0c;成为了连接传统金融市场与加密货币市场的桥梁。本文将带您了解USDT的诞生背景、发展历程、技术特点以及未来展望。 二、USDT的诞生背景 USDT是Tether公司推出…

antd:动态获取菜单

修改 app.tsx 文件 修改 getInitialState 方法 export async function getInitialState(): Promise<{...menuData?: MenuDataItem[] | undefined;fetchMenuList?: Promise<MenuDataItem[] | undefined>; }> {...const fetchMenuList async () > {const men…

【服务器部署篇】Linux下Node.js的安装和配置

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0c;产…

ChatGPT的工作原理,这篇文章说清楚了!

作者&#xff1a;史蒂芬沃尔弗拉姆&#xff08;Stephen Wolfram&#xff09;英、美籍 计算机科学家&#xff0c; 物理学家。他是 Mathematica 的首席设计师&#xff0c;《一种新科学》一书的作者。 ChatGPT 能够自动生成一些读起来表面上甚至像人写的文字的东西&#xff0c;这…

《Docker实际应用场景:开发、测试、CI/CD、微服务和容器编排》

Docker实际应用场景&#xff1a;开发、测试、CI/CD、微服务和容器编排 1. 引言 Docker 已成为现代软件开发和部署的重要工具&#xff0c;其在开发、测试、持续集成/持续交付 (CI/CD)、微服务和容器编排等方面的应用尤为广泛。本篇博客将通过具体的案例和场景说明 Docker 在这…

《庆余年算法番外篇》:范闲通过最短路径算法在阻止黑骑截杀林相

剧情背景 在《庆余年 2》22集中&#xff0c;林相跟大宝交代完为人处世的人生哲理之后&#xff0c;就要跟大宝告别了 在《庆余年 2》23集中&#xff0c;林相在告老还乡的路上与婉儿和大宝告别后 范闲也在与婉儿的对话中知道黑骑调动是绝密&#xff0c;并把最近一次告老还乡梅…

汇智知了堂实力展示:四川农业大学Python爬虫实训圆满结束

近日&#xff0c;汇智知了堂在四川农业大学举办的为期五天的校内综合项目实训活动已圆满结束。本次实训聚焦Python爬虫技术&#xff0c;旨在提升学生的编程能力和数据分析能力&#xff0c;为学生未来的职业发展打下坚实的基础。 作为一家在IT教育行业享有盛誉的机构&#xff…

代码随想录算法训练营Day7|454.四数相加II、 383. 赎金信、15. 三数之和、 18. 四数之和

454.四数相加II 四个数组分成两组进行for循环&#xff0c;先用HashMap存储所有第一组for循环出现的和的次数。再进行第二组for循环&#xff0c;每一次得出的和判断其负数是否在map的key中&#xff0c;如果存在&#xff0c;就加上这个value。 class Solution {public int four…

C++数据结构之:队Queue

摘要&#xff1a; it人员无论是使用哪种高级语言开发东东&#xff0c;想要更高效有层次的开发程序的话都躲不开三件套&#xff1a;数据结构&#xff0c;算法和设计模式。数据结构是相互之间存在一种或多种特定关系的数据元素的集合&#xff0c;即带“结构”的数据元素的集合&am…

嵌入式不一定只能用C!

嵌入式不一定只能用C! ---------------------------------------------------------------------------------------手动分割线-------------------------------------------------------------------------------- 本文章参考了以下文章&#xff1a; 这里是引用 ------------…

高级数据结构-树状数组

基本知识&#xff1a; 1.lowbit运算 int lowbit(int x){return x & -x; } 2.树状数组及其应用 a[N]是原始数组&#xff1b; c[N]是树状数组&#xff0c;存放数组a中i号位之前的lowbit(i)个元素之和&#xff0c;c[i]覆盖长度是lowbit(i) 特别强调 树状数组的下标必须从…

LIMS系统在建设行业中的应用

1、保证实验室检验检测业务效率及质量 通过系统对实验室实验业务流程进行管控&#xff0c;提高各个业务环节工作效率&#xff0c;对报表、记录、报告、各类文件实现电子化管理&#xff0c;避免了人工打印和传递&#xff0c;提高实验室检验检测工作业务水平。应用更先进的自动化…

现场辩论赛活动策划方案

活动目的&#xff1a; 技能竞赛中的辩论环节既可以考核员工的知识点&#xff0c;同时也可以考核员工业务办事能力&#xff0c;表达能力&#xff0c;是一种比较全面且较有深度的竞赛方式。 辩论赛细则&#xff1a; 1、时间提示 : 自由辩论阶段&#xff0c;每方使用时间剩…

springcloud项目部署Nginx+Gateway+其他服务

一. 部署 Nginx&#xff1a; Nginx 是一个高性能的 Web 服务器和反向代理服务器。它常用于将流量从公共互联网引导到内部的应用程序服务器。你可以在服务器上安装 Nginx&#xff0c;并根据你的需求进行配置。通常的配置包括监听端口、定义服务器块、配置反向代理、设置 SSL/TL…

中老年人交友市场的现状与趋势分析

随着社会的发展和人口老龄化的加剧&#xff0c;中老年人的社交需求日益增长&#xff0c;这为交友市场带来了新的机遇和挑战。本文将从中老年人的社交需求出发&#xff0c;对当前中老年人交友市场的现状、问题及未来发展趋势进行深入分析。 一、中老年人交友市场的现状 1. 市场…

华为云会议对接,华为云会议事件消息订阅

最近做了一个对接华为云视频会议接口&#xff0c;订阅华为云会议事件消息的功能。做之前在网上搜索了一番&#xff0c;居然发现没有一个这方面的资料。决定整理一下分享出来&#xff0c;留给有缘人 具体的需求是&#xff0c;我们的app上集成了华为云会议sdk&#xff0c;在用户开…