Java中try、catch的使用方法

 更新时间:2020年06月23日 10:58:45   作者:Locpeng  
这篇文章主要介绍了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() :打印异常信息出错的位置及原因。

到此这篇关于Java中try、catch的使用的文章就介绍到这了,更多相关Java中try catch的使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 深入探讨Java多线程中的volatile变量

    深入探讨Java多线程中的volatile变量

    这篇文章主要为大家详细并深入的探讨Java多线程中的volatile变量,volatile用来确保将变量的更新操作通知到其他线程,保证了新值能立即同步到主内存,以及每次使用前立即从主内存刷新,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • MyBatis入门初体验之使用大全(2)

    MyBatis入门初体验之使用大全(2)

    这篇文章主要介绍了MyBatis入门初体验之使用大全(2)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • Java向上转型和向下转型实例解析

    Java向上转型和向下转型实例解析

    这篇文章主要介绍了Java向上转型和向下转型实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Spring中的BeanFactory与FactoryBean区别详解

    Spring中的BeanFactory与FactoryBean区别详解

    这篇文章主要介绍了Spring中的BeanFactory与FactoryBean区别详解,BeanFactory是一个接口,它是spring中的一个工厂,FactoryBean也是一个接口,实现了3个方法,通过重写其中方法自定义生成bean,需要的朋友可以参考下
    2024-01-01
  • Java并发编程之Fork/Join框架详解

    Java并发编程之Fork/Join框架详解

    这篇文章主要介绍了Java并发编程之Fork/Join框架详解,Fork/Join框架是Java7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架,需要的朋友可以参考下
    2023-12-12
  • java 串口通信详细及简单实例

    java 串口通信详细及简单实例

    这篇文章主要介绍了java 串口通信详细及简单实例的相关资料,在开发硬件与软件结合的时候,就会用到串口,需要的朋友可以参考下
    2017-01-01
  • 创建一个Java的不可变对象

    创建一个Java的不可变对象

    这篇文章主要介绍了创建一个Java的不可变对象,一个类的对象在通过构造方法创建后如果状态不会再被改变,那么它就是一个不可变(immutable)类。它的所有成员变量的赋值仅在构造方法中完成,不会提供任何 setter 方法供外部类去修改,需要的朋友可以参考下
    2021-11-11
  • SpringBoot Security使用MySQL实现验证与权限管理

    SpringBoot Security使用MySQL实现验证与权限管理

    安全管理是软件系统必不可少的的功能。根据经典的“墨菲定律”——凡是可能,总会发生。如果系统存在安全隐患,最终必然会出现问题,这篇文章主要介绍了SpringBoot安全管理Spring Security基本配置
    2022-11-11
  • Log4j新手快速入门教程

    Log4j新手快速入门教程

    这篇文章主要给大家介绍了关于Log4j新手入门的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Log4j具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-11-11
  • 自定义一个简单的JDBC连接池实现方法

    自定义一个简单的JDBC连接池实现方法

    下面小编就为大家分享一篇自定义一个简单的JDBC连接池实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12

最新评论