java异常的捕获

Java内置了一套异常处理机制,总是使用异常来表示错误。

一,使用try……catch来捕获错误

异常是一种class,因此它本身带有类型信息。异常可以在任何地方抛出,但只需要在上层捕获,这样就和方法调用分离了:

try {String s = processFile(“C:\\test.txt”);// ok:
} catch (FileNotFoundException e) {// file not found:
} catch (SecurityException e) {// no read permission:
} catch (IOException e) {// io error:
} catch (Exception e) {// other error:
}

请添加图片描述
Java规定:

必须捕获的异常,包括Exception及其子类,但不包括RuntimeException及其子类,这种类型的异常称为Checked Exception。
不需要捕获的异常,包括Error及其子类,RuntimeException及其子类。

一般,我们会使用try……catch来捕获异常.
另外,我们也可以在方法名后面声明强制需要捕获的异常.

public byte[] getBytes(String charsetName) throws UnsupportedEncodingException {...
}

在方法定义的时候,使用throws Xxx表示该方法可能抛出的异常类型。调用方在调用的时候,必须强制捕获这些异常,否则编译器会报错。
而捕获错误后,我们通常会把它打印到控制台以便分析.

try {return s.getBytes("GBK");} catch (UnsupportedEncodingException e) {// 先记下来再说:e.printStackTrace();
}

所有异常都可以调用printStackTrace()方法打印异常栈,这是一个简单有用的快速打印异常的方法。

二,多个catch和finally

有多个错误需要捕获的话,就可以使用多个catch,当然,错误的子类必须写在前面.并且多个catch语句只有一个能被执行。
而,finally,就是无论如何都会被执行的部分代码:

public static void main(String[] args) {try {process1();process2();process3();} catch (UnsupportedEncodingException e) {System.out.println("Bad encoding");} catch (IOException e) {System.out.println("IO error");} finally {System.out.println("END");}
}

三,异常的传播

和js中一样,异常会不断向上传播,直到被try……catch捕获

public class Main {public static void main(String[] args) {try {process1();} catch (Exception e) {e.printStackTrace();}}static void process1() {process2();}static void process2() {Integer.parseInt(null); // 会抛出NumberFormatException}
}

四,空指针异常NullPointerException

空指针异常,就和js中的undefined差不多啦.

 		try {String s = null;System.out.println(s.toLowerCase());} catch (NullPointerException e) {e.printStackTrace();}

五,日志的打印

像前端的开发,我们打印日志直接使用console,后端则使用System.out.println(),但是后端是起一个服务给另一方调用,打印显得很麻烦,我们希望有文件可以追溯调用情况.
对于日志的打印.
我们常用的是log4j

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

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

相关文章

机器人自动驾驶时间同步进阶

0. 简介 之前时间同步也写过一篇文章介绍机器人&自动驾驶中的时间同步。在最近的学习中发现一些额外需要阐述学习的内容,这里就再次写一些之前没写到的内容。 1. NTP NTP 是网络时间协议,用来同步网络中各计算机时间的协议,把计算机的时…

[计算机效率] 网站推荐:网盘资源类

4.6 网盘资源类 在数字化时代,网盘资源搜索已成为我们日常生活和工作中不可或缺的一部分。无论是寻找工作资料、学习素材,还是娱乐资源,一个高效、可靠的网盘资源搜索网站都能为我们节省大量时间。今天,我将为大家推荐几个优秀的…

【C++类和对象】日期类的实现

💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…

华为公司战略规划和落地方法之五看三定工具解析【PPT图片】(内含超级福利)

导言 华为公司最厉害之处就是战略上的高举高打,“吹过的牛都实现了”。支撑华为公司战略从规划到落地的主要工具很多,其中“五看三定”是战略规划时最核心的方法之一。本资料将介绍五看三定的核心精髓。欢迎学习! 本材料结合谢宁老师专著《华…

数据结构之顺序表的实现(C语言版)

Hello, 大家好,我是一代,今天给大家带来有关顺序表的有关知识 所属专栏:数据结构 创作不易,望得到各位佬们的互三呦 一.前言 1.首先在讲顺序表之前我们先来了解什么是数据结构 数据结构是由“数据”和“结构”两词组合⽽来。 什…

【Diffusion实战】训练一个diffusion模型生成蝴蝶图像(Pytorch代码详解)

上一篇Diffusion实战是确确实实一步一步走的公式,这回采用一个更方便的库:diffusers,来实现Diffusion模型训练。 Diffusion实战篇:   【Diffusion实战】训练一个diffusion模型生成S曲线(Pytorch代码详解)…

六西格玛管理培训:我的转变与成长之旅

4月初,我参与了天行健咨询的六西格玛管理培训,这次经历不仅极大地提升了我的工作效率,还帮助我在工作中实现了卓越。现在,我想分享一些我在这次培训中的学习心得和实践经验,希望能对正在寻求提升绩效和卓越之路的大家有…

用于车载T-BOX汽车级的RA8900CE

用于车载T-BOX等高精度计时的汽车级时钟模块RTC:RA8900CE.车载实时时钟芯片RA8900CE内置32.768Khz的晶体,实现年、月、日、星期、小时、分钟和秒精准计时。RA8900CE满足AEC-Q200认证,内置温补功能,保证实时时钟的稳定可靠,功耗低至…

【目标检测】YOLO系列-YOLOv1 理论基础 通俗易懂

为方便大家理解YOLO的原理,这里将YOLOv1的部分内容基础内容进行用比较直白的话和例子进行阐述,为后续大家学习YOLO作为铺垫。 1、模型所干的活 工作中,大家经常将 Word 文档 上传到某转换器,然后转换输出为PDF文档。目标检测中我…

嵌入式Linux八股(二)——Linux

二、Linux 01.Linux系统编程 01.Linux系统文件类型: 7/8 种 普通文件:- 目录文件:d 字符设备文件:c 块设备文件:b 软连接:l 管道文件:p 套接字:s 未知文件 文件权限说明 …

抖音运营全攻略 沈阳新媒体运营培训

抖音发展趋势 数据显示,2023年,抖音日活量突破10亿。是目前最火的短视频软件。 抖音的总用户数量已超过12亿,日活10亿,人均单日使用时长超过2小时,这只是平均数据,其实大部分人刷抖音时间会超过3个小时&am…

Hbuilder快捷键个人习惯修改

自定义修改 [// {"key":"ctrld","command":"editor.action.deleteLines"},// {"key":"ctrle","command":"editor.action.addSelectionToNextFindMatch"}//目录内查找字符串{"key"…