java基础检查和未检查异常处理详解

 更新时间:2021年10月13日 10:18:28   作者:guoyp2126  
这篇文章介绍了java基础中异常的处理,主要讲解了java检查和未检查异常处理的示例详解有需要的朋友可以借鉴参考下,希望能够有所帮助

程序在运行时如果出错,编译器会抛出异常,异常如果没有被捕捉处理,程序会终止运行。异常分为未检查异常和已检查异常,以下对这两类异常做进一步说明。

检查异常

已检查异常(checked exceptions),编译器强制要求捕获并处理可能发生的异常,不处理就不能通过编译,如:IOException、SQLException以及用户自定义的Exception异常。如下图所示,程序运行时会因为IO等错误导致异常,要求处理异常,需要手动处理关闭释放资源。

在这里插入图片描述

继续抛出,通过throws exception抛出,代码如下:

public static void readFile() throws FileNotFoundException {
        String filename = "D:\\demo1.txt";
        File file = new File(filename);
        BufferedReader reader = null;
        StringBuffer sbf = new StringBuffer();

        reader = new BufferedReader(new FileReader(file));
    }

在方法使用 throws FileNotFoundException ,将异常向上抛。

使用try catch或try catch finally对异常进行捕获然后进行处理,代码如下:

    public static void main(String[] args) {
        String filename ="D:\\demo.txt";
        File file =new File(filename);
        BufferedReader reader=null;
        StringBuffer sbf = new StringBuffer();

        try {
            reader = new BufferedReader(new FileReader(file));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
        }
    }

未检查异常

未检查异常(unchecked exceptions),这类异常也叫RuntimeException(运行时异常),编译器不要求强制处置的异常,如:NullPointerException,IndexOutOfBoundsException,VirtualMachineError等异常。如:以下代码向上抛出异常,但调用时编译器并不强制要求处理异常

public static void convert(String str) throws NumberFormatException{
        Long num = Long.parseLong(str);
        System.out.println(num);
    }

调用方代码如下:

public static void main(String[] args) {
        convert("ww123");
    }

编译器并未出现强制要求使用处理异常,因为NumberFormatException异常是RuntimeException(运行时异常)。未检查异常通常处理方法为捕获、继续抛出和不处理,这类异常通常输出至控制台,编程人员手动的去查找问题。

总结

检查异常是编译器强制要求捕获并处理可能发生的异常,包括IOException、SQLException以及用户自定义的Exception等;未检查异常是编译器不强制要求捕获并处理可能发生的异常,包括RuntimeException类异常。JDK常见异常类图如下:

在这里插入图片描述

以上就是java基础检查和未检查异常处理详解的详细内容,更多关于java检查和未检查异常处理的资料请关注脚本之家其它相关文章!

相关文章

  • Java8中的类型注解浅析

    Java8中的类型注解浅析

    这篇文章主要介绍了Java8中的类型注解浅析,java8之前,注解只能是在声明的地方所使用,java8里面的注解则可以应用在任何地方,需要的朋友可以参考下
    2014-06-06
  • 详解Spring Boot实战之单元测试

    详解Spring Boot实战之单元测试

    本篇文章主要介绍了详解Spring Boot实战之单元测试,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • 分享一个你不知道的Java异常实现的缺陷

    分享一个你不知道的Java异常实现的缺陷

    Java中一个大家熟知的知识点就是异常捕获,try...catch...finally组合,但是很多人不知道这里面有一个关于Java的缺陷,或者说是异常实现的一点不足之处。本文就通过一个很简单的实验给大家演示下效果玩玩儿,希望大家能觉得有趣
    2022-12-12
  • 解决Springboot get请求是参数过长的情况

    解决Springboot get请求是参数过长的情况

    这篇文章主要介绍了解决Springboot get请求是参数过长的情况,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • mybatis generator 使用方法教程(生成带注释的实体类)

    mybatis generator 使用方法教程(生成带注释的实体类)

    下面小编就为大家带来一篇mybatis generator 使用方法教程(生成带注释的实体类)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • 关于@Configuration的作用说明

    关于@Configuration的作用说明

    这篇文章主要介绍了关于@Configuration的作用说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • 浅谈java中的TreeMap 排序与TreeSet 排序

    浅谈java中的TreeMap 排序与TreeSet 排序

    下面小编就为大家带来一篇浅谈java中的TreeMap 排序与TreeSet 排序。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • Spring AOP AspectJ使用及配置过程解析

    Spring AOP AspectJ使用及配置过程解析

    这篇文章主要介绍了Spring AOP AspectJ使用及配置过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • 学习Java HashMap,看这篇就够了

    学习Java HashMap,看这篇就够了

    这篇文章主要介绍了Java HashMap的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • Spring MVC+MyBatis+MySQL实现分页功能实例

    Spring MVC+MyBatis+MySQL实现分页功能实例

    分页功能是我们日常开发中经常会遇到的,下面这篇文章主要给大家介绍了Spring MVC+MyBatis+MySQL实现分页功能的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-06-06

最新评论