当前位置: 首页 > news >正文

java mutilcatch_Java中的Multicatch,不同的catch块 - Break易站

Java 异常

Java中的Multicatch,不同的catch块

在Java 7之前,我们必须在每个catch块中只捕获一个异常类型。因此,无论何时我们需要处理多个特定的异常,但对所有异常都采取相同的操作,那么我们必须有多个包含相同代码的catch块。在下面的代码中,我们必须处理两个不同的例外情况,但对两者都采取相同的操作。所以我们需要从Java 6.0开始有两个不同的catch块。

// A Java program to demonstrate that we needed

// multiple catch blocks for multiple exceptions

// prior to Java 7

import java.util.Scanner;

public class Test

{

public static void main(String args[])

{

Scanner scn = new Scanner(System.in);

try

{

int n = Integer.parseInt(scn.nextLine());

if (99%n == 0)

System.out.println(n + " is a factor of 99");

}

catch (ArithmeticException ex)

{

System.out.println("Arithmetic " + ex);

}

catch (NumberFormatException ex)

{

System.out.println("Number Format Exception " + ex);

}

}

}

输入1:

GeeksforGeeks

输出2:

Exception encountered java.lang.NumberFormatException:

For input string: "GeeksforGeeks"

输入2:

0

输出2:

Arithmetic Exception encountered java.lang.ArithmeticException: / by zero

Multicatch

从Java 7.0开始,单个catch块可以通过用|分隔每个catch块来捕获多个异常 (管道符号)在catch块。

// A Java program to demonstrate multicatch

// feature

import java.util.Scanner;

public class Test

{

public static void main(String args[])

{

Scanner scn = new Scanner(System.in);

try

{

int n = Integer.parseInt(scn.nextLine());

if (99%n == 0)

System.out.println(n + " is a factor of 99");

}

catch (NumberFormatException | ArithmeticException ex)

{

System.out.println("Exception encountered " + ex);

}

}

}

输入1:

GeeksforGeeks

输出1:

Exception encountered java.lang.NumberFormatException:

For input string: "GeeksforGeeks"

输入2:

0

输出2:

Exception encountered

java.lang.ArithmeticException: / by zero

处理多种异常类型的catch块不会在编译器生成的字节码中产生重复,也就是说,字节码不会复制异常处理程序。

重点:

如果所有异常都属于同一个类层次结构,我们应该捕获基本异常类型。但是,要捕捉每个异常,需要在它们自己的catch块中分别完成。

单个catch块可以处理多种类型的异常。但是,基本(或祖先)类和子类(或后代)异常无法在一个语句中捕获。例如

//作为异常是无效的

// NumberFormatException

catch(NumberFormatException | Exception ex)

所有的异常必须用竖线管分开| 。

相关文章:

  • java hashtable线程安全_基础才是重中之重~线程安全的Hashtable
  • java poi excel 图表_Java使用POI解析Excel表格
  • java xml 查询_JAVA操作XML的完整例子(查询、增加、修改、删除)
  • labview和python脚本_通过python节点将字典从LabVIEW传递到python脚本
  • mysql克隆master_MySQL复制(二)Master-Slave复制实践
  • java map 平均值_使用Java 8获取两个HashMap的平均值
  • python中给出一个不超过10的正整数n_大学python题 求大佬解答!!!
  • docker建多个mysql_在Linux下使用Docker-compose建立多个数据库
  • 平安科技java在线考试_都有哪些开源的在线考试系统?
  • java clone性能比较_Java深度拷贝方式和性能对比
  • 老黄历java_基于聚合数据的老黄历接口调用示例-JAVA版
  • java properties api_【001】java中配置文件properties的操作
  • java 获取代码line_linedemo.java
  • java spring 加载顺序_java编程之如何控制springboot中bean的加载顺序
  • java注册用户信息_界面设计之注册用户信息
  • 【技术性】Search知识
  • 77. Combinations
  • AngularJS指令开发(1)——参数详解
  • avalon2.2的VM生成过程
  • bootstrap创建登录注册页面
  • create-react-app做的留言板
  • es6
  • golang中接口赋值与方法集
  • IDEA 插件开发入门教程
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • Javascript Math对象和Date对象常用方法详解
  • JavaScript创建对象的四种方式
  • Kibana配置logstash,报表一体化
  • Netty源码解析1-Buffer
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • webgl (原生)基础入门指南【一】
  • 彻底搞懂浏览器Event-loop
  • 服务器之间,相同帐号,实现免密钥登录
  • 搞机器学习要哪些技能
  • 回顾 Swift 多平台移植进度 #2
  • 将 Measurements 和 Units 应用到物理学
  • 免费小说阅读小程序
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 微服务框架lagom
  • 详解NodeJs流之一
  • ​Python 3 新特性:类型注解
  • (1)svelte 教程:hello world
  • (24)(24.1) FPV和仿真的机载OSD(三)
  • (C语言)fread与fwrite详解
  • (差分)胡桃爱原石
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • *算法训练(leetcode)第三十九天 | 115. 不同的子序列、583. 两个字符串的删除操作、72. 编辑距离
  • .net core 使用js,.net core 使用javascript,在.net core项目中怎么使用javascript
  • .net web项目 调用webService
  • .NET 使用 XPath 来读写 XML 文件
  • .NET开源、简单、实用的数据库文档生成工具
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化
  • //usr/lib/libgdal.so.20:对‘sqlite3_column_table_name’未定义的引用