【JAVA】我们该如何规避代码中可能出现的错误?(二)

在这里插入图片描述


个人主页:【😊个人主页】
系列专栏:【❤️初识JAVA】


文章目录

  • 前言
  • 异常方法(Throwable类)
    • Throwable类的方法
  • 捕获异常
    • 多重捕获块


前言

异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误00有时候是可以避免的,学习一些异常处理方式往往可以使我们编程的时间大大减少。
注:本文为系列文章,前文可点击观看➡️【JAVA】我们该如何规避代码中可能出现的错误?(一)
请添加图片描述

异常方法(Throwable类)

Java中的Throwable类是所有错误或异常的父类,它有两个子类:ExceptionErrorException表示程序可以处理的异常,而Error表示程序无法处理的错误。

Throwable类定义了许多方法来获取异常信息,例如getMessage()方法可以获取异常的描述信息,getStackTrace()方法可以获取异常发生时调用堆栈中的信息,toString()方法可以将异常转换为字符串。子类可以根据需要覆盖这些方法来提供特定的异常信息。

通常情况下,在Java程序中抛出异常时,可以使用try-catch语句捕获异常并进行处理。如果没有处理异常,程序将会终止并输出异常信息。当然也可以使用throws关键字将异常抛给上层调用者处理。

在这里插入图片描述

Throwable类的方法

public String getMessage()

返回关于发生的异常的详细信息。这个消息在Throwable 类的构造函数中初始化了。

public Throwable getCause()

返回一个 Throwable 对象代表异常原因。

public String toString()

返回此 Throwable 的简短描述。

public void printStackTrace()

将此 Throwable 及其回溯打印到标准错误流。。

public StackTraceElement [] getStackTrace()

返回一个包含堆栈层次的数组。下标为0的元素代表栈顶,最后一个元素代表方法调用堆栈的栈底。

public Throwable fillInStackTrace()

用当前的调用栈层次填充Throwable 对象栈层次,添加到栈层次任何先前信息中。

捕获异常

try
{// 程序代码
}catch(ExceptionName e1)
{//Catch 块
}

在Java中,捕获异常是通过try-catch语句块实现的。try语句块中包含可能抛出异常的代码catch语句块中处理异常。如果try语句块中的代码抛出异常,则会尝试寻找与异常类型匹配的catch语句块来处理异常。在catch语句块中,可以使用异常对象的信息来执行任何必要的操作,例如输出错误消息、记录日志或恢复程序执行。


try {// 可能抛出异常的代码int x = 10/0; // 除以0将会抛出一个ArithmeticException异常
} catch (ArithmeticException e) {// 处理异常System.out.println("发生异常:" + e.getMessage());e.printStackTrace();
}

在上面的例子中,当执行10/0操作时,将会抛出一个ArithmeticException异常。catch语句块中的代码将处理该异常,输出错误消息并打印异常堆栈跟踪信息。

在这里插入图片描述

多重捕获块

一个 try 代码块后面跟随多个 catch 代码块的情况就叫多重捕获。
多重捕获块的语法如下所示:

try{// 程序代码
}catch(异常类型1 异常的变量名1){// 程序代码
}catch(异常类型2 异常的变量名2){// 程序代码
}catch(异常类型3 异常的变量名3){// 程序代码
}

上面的代码段包含了 3 个 catch块。
可以在 try 语句后面添加任意数量的 catch 块。
如果保护代码中发生异常,异常被抛给第一个 catch 块。
如果抛出异常的数据类型与 ExceptionType1 匹配,它在这里就会被捕获。
如果不匹配,它会被传递给第二个 catch 块。
如此,直到异常被捕获或者通过所有的 catch 块。

在这里插入图片描述

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

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

相关文章

git-3

1.如何让工作区的文件恢复为和暂存区一样? 工作区所作的变更还不及暂存区的变更好,想从暂存区拷贝到工作区,变更工作区(恢复成和暂存区一样的状态),想到用git checkout -- 文件名 2.怎样取消暂存区部分文件的更改? 如…

无损压缩技巧:减小PDF文件尺寸的有效方法

我们在制作pdf文档的时候,会加入许多内容,文字、图片等等,素材添加的过多之后就会导致pdf文档特别大,在上传或者储存时,就会特别不方便,所以今天就告诉大家一个pdf压缩的方法,使用pdf在线压缩工…

4-Docker命令之docker info

后续为大家逐个讲解一下docker常用命令及其相关用法。docker常用命令查看如下: [root@centos79 ~]# docker --helpUsage: docker [OPTIONS] COMMANDA self-sufficient runtime for containersCommon Commands:run Create and run a new container from an imageexec…

洛谷 P1883 函数

P1883 函数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) Error Curves - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 这两题是一模一样的,过一题水两题。 分析 主要难点在于证明F(x)是一个单峰函数可以被三分,但是我随便画了几个f(x)之后发现好像…

MySQL的Redo Log跟Binlog

文章目录 概要Redo Log日志Redo Log的作用Redo Log的写入机制 Binlog日志Binlog的作用Binlog写入机制 两段提交 概要 Redo Log和Binlog是MySQL日志系统中非常重要的两种机制,也有很多相似之处,本文主要介绍两者细节和区别。 Redo Log日志 Redo Log的作…

Docker+ Jenkins+Maven+git自动化部署

环境:Centos7 JDK1.8 Maven3.3.9 Git 2.40 Docker 20.10.17 准备工作: 安装Docker Centos7默认的yum安装的docker是1.13,版本太低,很多镜像都要Docker版本要求,升级Docker版本。 卸载已安装Docker: yum …

你知道如何实现游戏中的透视效果吗?

引言 游戏中的透视效果可以合理运用CtrlCV实现。 不知道大家有没有这样一段经历:在做Cocos项目时需要一些特定的Shader去做一些特定的效果,例如透视、高光、滤镜等等,想自己写吧,不怎么会啊,网上又找不到&#xff0c…

27 - 如何使用设计模式优化并发编程?

在我们使用多线程编程时,很多时候需要根据业务场景设计一套业务功能。其实,在多线程编程中,本身就存在很多成熟的功能设计模式,学好它们,用好它们,那就是如虎添翼了。今天我就带你了解几种并发编程中常用的…

redis-cluster集群(目的:高可用)

1、特点 集群由多个node节点组成,redis数据分布在这些节点中,在集群中分为主节点和从节点,一个主对应一个从,所有组的主从形成一个集群,每组的数据是独立的,并且集群自带哨兵模式 2、工作原理 集群模式中…

【ZedBoard学习实例1】 VGA显示彩条

ZedBoard学习实例1 VGA显示彩条 ZedBoard学习实例1 VGA显示彩条参考文章改进 ZedBoard学习实例1 VGA显示彩条 参考文章 彩条控制verilog代码 主体参考了该文章的代码,文中还介绍了相关的电路图,还有ZedBoard的手册内容。19201080分辨率显示器的参数 针…

重生之我是一名程序员 37 ——C语言中的栈溢出问题

哈喽啊大家晚上好! 今天呢给大家带来一个烧脑的知识——C语言中的栈溢出问题。那什么是栈溢出呢?栈溢出指的是当程序在执行函数调用时,为了保护函数的局部变量和返回地址,将这些数据存储在栈中。如果函数在函数调用时使用了过多的…

Sentinel核心类解读:Entry

默认情况下,Sentinel会将controller中的方法作为被保护资源,Sentinel中的资源用Entry来表示。 Sentinel中Entry可以理解为每次进入资源的一个凭证,如果调用SphO.entry()或者SphU.entry()能获取Entry对象,代表获取了凭证&#xff…

安卓手机便签APP用哪个,手机上好用的便签APP是什么

在日常生活及工作方面,总是有许多做不完的事情需要大家来处理,当多项任务堆叠交叉在一起时,很容易漏掉一些项目,这时候大家会借助经常携带的手机来记录容易忘记的事情,如手机上的闹钟、定时提醒软件都可以用来记录待办…

2023亚太杯数学建模A题思路分析 - 采果机器人的图像识别技术

1 赛题 问题A 采果机器人的图像识别技术 中国是世界上最大的苹果生产国,年产量约为3500万吨。与此同时,中国也是世 界上最大的苹果出口国,全球每两个苹果中就有一个,全球超过六分之一的苹果出口 自中国。中国提出了一带一路倡议…

JDK11新特性

目录 一、JShell 二、Dynamic Class-File Constants类文件新添的一种结构 三、局部变量类型推断(var ”关键字”) 四、新加的一些实用API 1. 新的本机不可修改集合API 2. Stream 加强 3. String 加强 4. Optional 加强 5. 改进的文件API 五、移…

canvas

Canvas 是 Android 中用于绘制图形的重要类,它提供了许多用于绘制的常用方法。以下是一些常用的 Canvas 方法: 绘制颜色和背景: drawColor(int color): 用指定颜色填充整个画布。drawRGB(int r, int g, int b): 用 RGB 值指定颜色填充整个画布…

进程池,线程池与跨进程数据共享爬取某岸网图片

看教程的时候看到一个,生产者跟消费者的概念比较有意思,但是给的代码有问题无法正常运行,于是我就捣鼓了一下。 基本概念就是: 生产者: 一个进程获取网页没页的图片连接(主进程…

Django框架之中间件

目录 一、引入 二、Django中间件介绍 【1】什么是Django中间件 【2】Django中间件的作用 【3】示例 三、Django请求生命周期流程图 四、Django中间件是Django的门户 五、Django中间件详解 六、中间件必须要掌握的两个方法 (1) process_request (2) process_respon…

Redis集群环境各节点无法互相发现与Hash槽分配异常 CLUSTERDOWN Hash slot not served的解决方式

原创/朱季谦 在搭建Redis5.x版本的集群环境曾出现各节点无法互相发现与Hash槽分配异常 CLUSTERDOWN Hash slot not served的情况,故而把解决方式记录下来。 在以下三台虚拟机机器搭建Redis集群—— 192.168.200.160192.168.200.161192.168.200.162启动三台Redis集…

芯知识 | MP3语音芯片IC的优势特征及其在现代科技应用中的价值

随着科技的飞速发展,MP3语音芯片作为一种高度集成的音频处理解决方案,在现代电子产品中发挥着越来越重要的作用。本文将分析MP3语音芯片的优势特征,并探讨其在各个领域的应用价值。 一、MP3语音芯片的优势特征 MP3语音芯片具有多种显著的优…