Java中try、catch的使用方法
作者:Locpeng 发布时间:2021-11-08 00:48:12
标签:Java,try,catch,使用
Java中有两种处理异常的方式,分别是用throws抛出异常、用try、catch捕获异常。
try-catch
在Java
try-catch语句的语法格式:
try{
//代码块
}catch(Exception1 e){
//抛出异常后所要进行的操作
}
当try语句当中捕获到异常时,会将异常抛出到catch语句中匹配异常类型,当异常和catch后面的异常类型相匹配时,则catch语句将会执行。
举个最基础的例子,除数不能为0
try中的异常与catch后面的异常类型匹配的情况:
try{
int i = 1/0;//发生异常立即跳往catch语句中执行,不执行异常代码下面的代码
System.out.println("输出结果为:" + i);
}catch(ArithmeticException e){
e.printStackTrace();
System.out.println("编译报错,除数不能为0");
}
输出结果:
try中抛出的异常与catch后面的异常类型不匹配的情况:
try{
int i = 1/0;//发生异常立即跳往catch语句中执行,不执行异常代码下面的代码
System.out.println("输出结果为:" + i);
}catch(NullPointerException e){
e.printStackTrace();
System.out.println("编译报错,除数不能为0");
//因为异常类型不匹配所以该catch语句并未执行
}
输出结果:
一个try语句可以接多个catch语句
当有多个catch语句时,try部分的语句如果发生异常,就会在依次在各个catch语句中试图匹配异常类型。
try{
int i = 1/0;//发生异常立即跳往catch语句中执行,不执行异常代码下面的代码
System.out.println("输出结果为:" + i);
}catch(ArithmeticException e){
e.printStackTrace();
System.out.println("运算条件异常");
//try语句捕获的异常与该catch语句后的异常相匹配,所以执行该catch语句
}catch(NullPointerException e){
e.printStackTrace();
System.out.println("空指针异常");
//try语句捕获的异常与该catch语句后的异常不匹配,所以不执行该catch语句
}
JDK1.7之后还有一种不常用的写法:
try{
int i = 1/0;//发生异常立即跳往catch语句中执行,不执行异常代码下面的代码
System.out.println("输出结果为:" + i);
}catch (NullPointerException | ArithmeticException e) {
e.printStackTrace();
if (e instanceof NullPointerException)
System.out.println("空指针异常");
if (e instanceof ArithmeticException)
System.out.println("运算条件异常");
}
这种写法需要通过instanceof 进行判断具体的异常类型。
两种写法的输出都是一样的:
在catch内部,通常下面的方法输出异常信息:
getMessage() 返回一个字符串对发生的异常进行描述。
printStackTrace() :打印异常信息出错的位置及原因。
来源:https://blog.csdn.net/Locpeng/article/details/106835636


猜你喜欢
- 一、目的本篇文章的目的是记录本人使用flutter加载与调用第三方aar包。二、背景本人go后端,业余时间喜欢玩玩flutter。一直有一个
- 前言春节要到了,看惯了前端各种小游戏,确实做得很好,很精致。但是我也要为后端程序员稍微做一点贡献,做一款java版本的【年兽大作战】。这个游
- 目录说明使用常见问题No such instance field: 'logger2'说明logback作为log4j的替代
- 断断续续的总算的把android开发和逆向
- 1. 基本用法<dependency> <groupId>org.redisson</groupI
- 前文常用的控件介绍了不少,现在就来讨论一下手机开发中常用到的画图。要掌握Android的画图,首先就要了解一下,基本用到的如下一些图形接口:
- 今天在一个 .NET Core 项目中调用一个自己实现的使用 params 可变参数的方法时触发了 null 引用异常,原以为是方法中没有对
- android读取assets文件下的内容,一般都是使用getAsset.open()方法,并将文件的路径作为参数传入,而当我们解析一个目录
- 根据狂神的视频做的,然后自己优化了一些bug,比如新生成食物的时候不会生成在蛇的身体上,再新增长身体的时候不会在左上角出现一个绿色的方块以及
- 这是一个介绍基本异常处理的小例子,包括抛出,捕获,断言,日志。Java异常处理通过5个关键字try、catch、throw、throws、f
- Java8已经发布很多年了,但是很多人在开发时仍然坚持使用着Date和SimpleDateFormat进行时间操作。SimpleDateFo
- 目录一、字节码文件 与 JVM二、字节码文件示例三、字节码文件二进制结构分析1、魔数2、次版本号3、主版本号4、常量池个数总结一、字节码文件
- 在此附上超详细JDK1.8安装与配置超详细JDK1.8安装与配置一、卸载JDK应用程序①在开始处,点击设置②点击应用③点击程序和功能④打开程
- 1. 数据构造索引2个文档到 hotel 索引中:PUT /hotel/_doc/1{ "title": &
- 本文实例讲述了C#实现在前端网页弹出警告对话框(alert)的方法。分享给大家供大家参考。具体如下:通常我们通过JS生成警告对话框,下面的代
- 本文实例为大家分享了Android Studio实现进度条效果的具体代码,供大家参考,具体内容如下实验作业 要求一个进度条,进度随机效果图x
- AnimationListener听名字就知道是对Animation设置 * ,说简单点就是在Animation动画效果开始执行前,执行完毕
- OSS.Http项目对于.Net Standard标准库的支持已经迁移完毕,OSS开源系列两个最底层的类库已经具备跨运行时支持的能力。由于O
- 目标线程的join方法暂停当前线程,直到目前线程完成(从run()方法返回),供大家参考,具体内容如下Java代码:package Thre
- 本文实例为大家分享了Android TextView实现跑马灯效果的具体代码,供大家参考,具体内容如下当Layout中只有一个TextVie