Java中try-catch的使用及注意细节

 更新时间:2023年06月13日 14:36:50   作者:呀吖呀吖呀  
现在有很多的语言都支持try-catch,比如常见的就是c++,java等,这篇文章主要给大家介绍了关于Java中try-catch的使用及注意细节的相关资料,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下

引言

🎈 Java中提供 trycatch块来处理异常。try块用于包含可能出错的代码。catch块用于处理try块中发生的异常。可以根据需要在程序中有多个try…catch块。

1. 基本语法

try{
//可疑代码
//将异常生成对象的异常对象传递给catch块
}catch(异常){
//对异常进行处理
}finally{
} //可以没有finally

2. 注意细节

  1. 如果异常发生了,则异常发生后面的代码不会执行,直接进入到catch
  2. 如果异常没有发生,则顺序执行try的代码块,不会进入到catch
  3. 如果希望发不发生异常都进入到某段代码段 例如:关闭数据库的连接,则使用 finally{ }
public static void main(String[] args) {
    //ctrl + alt +t 
    try {
        String str = "123";
        int a = Integer.parseInt(str);
        System.out.println(a);
    } catch (NumberFormatException e) {
        System.out.println("异常信息" + e.getMessage());
    }finally {
        System.out.println("finally代码块被执行");
    }
    System.out.println("程序继续");
}

运行结果为:

请添加图片描述

当更改为"abc"时

请添加图片描述

语句时再次运行:

请添加图片描述

4.可以有多个catch语句,捕捉不同的异常(进行不同的业务处理),要求父类异常在后,子类异常在前,比如Exception 在后 ,NullPointerException在前,如果发生异常,只会匹配一个catch

public class TryCatchDetai {
    public static void main(String[] args) {

        try {
            Person person = new Person();
            person = null;
            System.out.println(person.getName());
            int n1 = 10;
            int n2 = 0;
            int res = n1/n2;
        }catch (NullPointerException e){
            System.out.println("空指针异常 " + e.getMessage());
        }
        catch (Exception e){
            System.out.println("算术异常" + e.getMessage());
        }finally {

        }
    }
}

class Person{
    private String name = "yayaya";

    public String getName(){
        return name;
    }
}

运行的结果为:

请添加图片描述

但是实际上还有一个异常为算术异常 及分母不能为0,因为已经找到一个异常就不会捕获下一个异常。

person = null;代码注销

再次运行:

请添加图片描述

如果更改获取异常的顺序,编译器就会报错。所以父类异常需要在后,子类异常需要在前。

请添加图片描述

5.可以进行try-finally 配合使用,这种用法相当于没有捕获异常

所以程序会崩溃。但是finally一定会执行,例如:需要关闭数据库,一些必须要执行的代码

public class TryCatchDetail02 {
    public static void main(String[] args) {
        try {
            int n1 = 10000;
            int n2 = 0;
            System.out.println(n1/n2);
        }finally {
            System.out.println("执行finally");
        }
        System.out.println("程序继续运行");
    }
}

当程序运行到n1/n2时候会报错,这个时候会先执行finally语句,执行完之后就崩溃。!!

运行结果为:

请添加图片描述

快捷键

全选住代码 ctrl + alt +t 选择6就可以一键生成try=catch

快捷键

总结 

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

相关文章

  • Spring Boot 3.x 集成 Eureka Server/Client的详细过程

    Spring Boot 3.x 集成 Eureka Server/Cl

    随着SpringBoot 3.x版本的开发尝试,本文记录了在集成Eureka Server/Client时所遇到的问题和解决方案,文中详细介绍了搭建服务、配置文件和测试步骤,感兴趣的朋友跟随小编一起看看吧
    2024-09-09
  • Java中的List接口实现类LinkList和ArrayList详解

    Java中的List接口实现类LinkList和ArrayList详解

    这篇文章主要介绍了Java中的List接口实现类LinkList和ArrayList详解,List接口继承自Collection接口,是单列集合的一个重要分支,实现了List接口的对象称为List集合,在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,需要的朋友可以参考下
    2024-01-01
  • 解决springboot利用ConfigurationProperties注解配置数据源无法读取配置信息问题

    解决springboot利用ConfigurationProperties注解配置数据源无法读取配置信息问题

    今天在学习springboot利用ConfigurationProperties注解配置数据源的使用遇到一个问题无法读取配置信息,发现全部为null,纠结是哪里出了问题呢,今天一番思考,问题根源找到,下面把我的解决方案分享到脚本之家平台,感兴趣的朋友一起看看吧
    2021-05-05
  • Java Scala之模式匹配与隐式转换

    Java Scala之模式匹配与隐式转换

    在Java中我们有switch case default这三个组成的基础语法,在Scala中我们是有match和case组成 default的作用由case代替,本文详细介绍了Scala的模式匹配与隐式转换,感兴趣的可以参考本文
    2023-04-04
  • 详解SpringBoot工程的三种搭建方式

    详解SpringBoot工程的三种搭建方式

    这篇文章主要介绍了详解SpringBoot工程的三种搭建方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • SpringBoot Profile多环境配置方式

    SpringBoot Profile多环境配置方式

    这篇文章主要介绍了SpringBoot Profile多环境配置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • springboot集成redis实现简单秒杀系统

    springboot集成redis实现简单秒杀系统

    这篇文章主要为大家详细介绍了springboot集成redis实现简单秒杀系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • Hibernate原理及应用

    Hibernate原理及应用

    本文主要介绍了Hibernate原理及应用。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • Springboot+Mybatis中typeAliasesPackage正则扫描实现方式

    Springboot+Mybatis中typeAliasesPackage正则扫描实现方式

    这篇文章主要介绍了Springboot+Mybatis中typeAliasesPackage正则扫描实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • SpringAOP+RabbitMQ+WebSocket实战详解

    SpringAOP+RabbitMQ+WebSocket实战详解

    这篇文章主要介绍了SpringAOP+RabbitMQ+WebSocket实战详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11

最新评论