Java深入讲解异常处理try catch的使用

 更新时间:2022年06月08日 08:35:14   作者:Demo龙  
这篇文章主要介绍了Java异常处理机制try catch流程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

1.try-catch异常处理说明

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

基本语法

try{
	//可疑代码
	//将一场生成对应的异常对象,传递给catch块
}catch{
	//对异常的处理
}

2.try-catch异常处理细节

1.如果异常发生了,则异常后面的代码不会执行,直接进入到catch块

2.如果异常没有发生,则顺序执行try的代码块,不会进入到catch。

3.如果希望不管是否发生异常,都执行某段代码,则使用如下代码-finally{}

示例01

package com.demo.trycatch;

/**
 * @version 1.0
 * @auther Demo龙
 */
public class TrycatchDetial {
    public static void main(String[] args) {
        //1.如果异常发生了,则异常后面的代码不会执行,直接进入到catch块
        //ctrl+alt+t
        try {
            String ch="kkk";
            int a=Integer.parseInt(ch);
            System.out.println("number"+a);
        } catch (NumberFormatException e) {
            System.out.println("异常信息:"+e.getMessage());
        }
        System.out.println("程序继续运行");
        // > 2.如果异常没有发生,则顺序执行try的代码块,不会进入到catch。
        try {
            String ch="556";
            int a=Integer.parseInt(ch);
            System.out.println("number="+a);
        } catch (NumberFormatException e) {
            System.out.println("异常信息:"+e.getMessage());
        }
        System.out.println("程序继续运行02");
        //> 3.如果希望不管是否发生异常,都执行某段代码,则使用如下代码-finally{}
        try {
            String ch="Demo龙";
            int a=Integer.parseInt(ch);
            System.out.println("number="+a);
        } catch (NumberFormatException e) {
            System.out.println("异常信息:"+e.getMessage());
        } finally {
            System.out.println("finally被执行");
        }
    }
}

测试结果01

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

5.try-finally配合使用,这种用法相当于没有捕获异常,程序会直接退出,但会执行finally业务逻辑

示例02

package com.demo.trycatch;
/**
 * @version 1.0
 * @auther Demo龙
 */
public class TrycatchDetial02 {
    //4.可以有多个catch语句,捕获不同的异常(进行不同的业务处理),
    // 要求父类异常在后,子类异常在前,如果发生异常,只会匹配一个catch。
    public static void main(String[] args) {
        try {
            Person person = new Person();
            person=null;
            System.out.println("name="+person.getName());//空指针异常
            int n1=9;
            int n2=0;
            int num=n1/n2;//数学异常
            //1.try代码块可能有多个异常
            //2.可以使用多个catch分别捕获不同的异常,相应处理
            //3.要求子类异常写在前面,父类异常写在后面
        }catch (NullPointerException e){
            System.out.println("空指针异常:"+e.getMessage());
        } catch (ArithmeticException c){
            System.out.println("算数异常:"+c.getMessage());
        } catch (Exception e) {
            System.out.println("异常情况:"+e.getMessage());
        } finally {
            System.out.println("finally代码块被执行");
        }
        System.out.println("程序继续运行。");
        //5.try-finally配合使用,这种用法相当于没有捕获异常,
        // 程序会直接退出,但会执行finally业务逻辑
        System.out.println("try-finally细节测试");
        try {
            int m1=9;
            int m2=3;
            System.out.println("m1/m2="+m1/m2);
        } finally {
            System.out.println("执行finally代码块02");
        }
        try {
            int m1=9;
            int m2=0;
            System.out.println("m1/m2="+m1/m2);
        } finally {
            System.out.println("执行finally代码块01");
        }
    }
}
class Person{
    private String name="demo龙";

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

测试结果02

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

相关文章

  • 解决spring结合mybatis时一级缓存失效的问题

    解决spring结合mybatis时一级缓存失效的问题

    这篇文章主要介绍了解决spring结合mybatis时一级缓存失效的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • SpringBoot优化接口响应时间的九个技巧

    SpringBoot优化接口响应时间的九个技巧

    在实际开发中,提升接口响应速度是一件挺重要的事,特别是在面临大量用户请求的时候,本文为大家整理了9个SpringBoot优化接口响应时间的技巧,希望对大家有所帮助
    2024-01-01
  • 使用SpringBoot中的Schedule定时发送邮件的方法

    使用SpringBoot中的Schedule定时发送邮件的方法

    在SpringBoot中,你可以使用@Scheduled注解来创建定时任务,@Scheduled注解可以应用于方法上,表示这个方法是一个定时任务,可以根据指定的时间间隔或固定时间执行,本文就给大家介绍一下如何使用SpringBoot中的Schedule定时发送邮件,需要的朋友可以参考下
    2023-08-08
  • Java 泛型的上界和下界通配符示例详解

    Java 泛型的上界和下界通配符示例详解

    这篇文章主要为大家通过示例介绍了Java 泛型的上界和下界通配符,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Java串口通信入门

    Java串口通信入门

    串口通信是一种用于在计算机和外部设备之间进行数据交换的通信方式,本文主要介绍了Java串口通信入门,并提供一个简单的示例来演示如何在Java中进行串口通信,感兴趣的可以了解一下
    2023-11-11
  • JetBrains推出全新IDE之Fleet详解

    JetBrains推出全新IDE之Fleet详解

    当您第一次启动 Fleet 时,它会作为一个功能齐全的编辑器启动,具有语法高亮显示、简单的代码补全以及您对一个编辑器期待的所有功能,本文学习下JetBrains推出全新IDE之Fleet相关知识,感兴趣的朋友跟随小编一起看看吧
    2021-12-12
  • SpringBoot整合jasypt实现敏感信息的加密详解

    SpringBoot整合jasypt实现敏感信息的加密详解

    一般公司的核心业务代码中,都会存在与数据库、第三方通信的secret key等敏感信息,如果以明文的方式存储,一旦泄露,那将会给公司带来巨大的损失。本篇文章通过讲解:Springboot集成Jasypt对项目敏感信息进行加密,提高系统的安全性
    2022-09-09
  • Java 线程池原理深入分析

    Java 线程池原理深入分析

    这篇文章主要介绍了Java 线程池原理深入分析的相关资料,需要的朋友可以参考下
    2017-02-02
  • MyBatis插入Insert、InsertSelective的区别及使用心得

    MyBatis插入Insert、InsertSelective的区别及使用心得

    这篇文章主要介绍了MyBatis插入Insert、InsertSelective的区别及使用心得,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • linux系统下java项目在后台启动的4种方式总结

    linux系统下java项目在后台启动的4种方式总结

    Linux是集多种功能于一身的操作系统,它可以让用户查看和管理当下正在运行的进程,包括Java程序,这篇文章主要给大家总结介绍了关于linux系统下java项目在后台启动的4种方式,需要的朋友可以参考下
    2023-10-10

最新评论