【Java基础】打卡学习Java异常处理(案例详解)

举报
辰兮 发表于 2022/03/22 22:30:20 2022/03/22
【摘要】 【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、...

【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行!

博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我的博客能帮助到更多的人,分享获取新知,大家一起进步!

吾等采石之人,应怀大教堂之心,愿大家奔赴在各自的热爱里…


一、基础学习

本篇分享的Java基础:异常处理
在这里插入图片描述
来来来,直接看看我写的相关案例

/**
 * @program: ExceptionDemo
 * @description: 异常相关知识点
 * @author: 辰兮要努力
 * @create: 2021-10-2 16:37:27
 */
public class ExceptionDemo {
    public static void main(String[] args){
        try {
            handle();
        }catch(Exception e) {
            System.out.println("捕获程序在运行过程中产生的异常");
        }

        try {
            handle();
        }catch(ArithmeticException e) {
            System.out.println("捕获程序在运行过程中产生的异常");
        }

        System.out.println("验证如果不捕获异常能否执行后续的程序");
        handle();
        System.out.println("hello 我无法输出");
    }
    public static void handle(){
        int a = 5/0;  //异常抛出点
        /**
         * 此处下面的代码不会执行,原因:上面代码抛出异常未在方法中捕捉,程序中断
         */
        System.out.println("hello world");
    }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

如上案例的输出结果,建议初学者自行实践

捕获程序在运行过程中产生的异常
捕获程序在运行过程中产生的异常
验证如果不捕获异常能否执行后续的程序
Exception in thread "main" java.lang.ArithmeticException: / by zero
	at com.exception.ExceptionDemo.handle(ExceptionDemo.java:32)
	at com.exception.ExceptionDemo.main(ExceptionDemo.java:28)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

思考问题

1、 System.out.println(“hello world”);此段代码是否会执行?

解答1:System.out.println(“hello world”)此段代码不能被执行,因为执行到 int a = 5/0; 的时候程序抛出了异常,且被捕获,此段代码被跳过


2、如果捕获的异常不匹配实际的异常,程序是否能正常执行?

比如这里切换成NullPointerException后续的程序是否能正常进行

   try {
            handle();
        }catch(NullPointerException e) {
            System.out.println("捕获程序在运行过程中产生的异常");
        }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

直接看结果吧
在这里插入图片描述
解答2:此处编译不会报错,此处捕获的异常不匹配,后续的程序无法正常执行下去


二、进阶学习

Throwable 是 Java 语言中所有错误与异常的超类。

Throwable 包含两个子类:Error(错误)和 Exception(异常),它们通常用于指示发生了异常情况。

Throwable 包含了其线程创建时线程执行堆栈的快照,它提供了 printStackTrace() 等接口用于获取堆栈跟踪数据等信息

在这里插入图片描述

Error 和 Exception 区别是什么?

请添加图片描述
Error 类型的错误通常为虚拟机相关错误,如系统崩溃,内存不足,堆栈溢出等,编译器不会对这类错误进行检测,JAVA 应用程序也不应对这类错误进行捕获,一旦这类错误发生,通常应用程序会被终止,仅靠应用程序本身无法恢复;

Exception 类的错误是可以在应用程序中进行捕获并处理的,通常遇到这种错误,应对其进行处理,使应用程序可以继续正常运行


说一说Java中的受检异常(checked exception)和非受检异常(unchecked exception)?

请添加图片描述
Java 的所有异常可以分为受检异常(checked exception)和非受检异常(unchecked exception)。

受检异常:

  • 范围:除 RuntimeException 及其子类外,其他的 Exception异常都属于受检异常。
  • 编译器会检查此类异常,也就是说当编译器检查到应用中的某处可能会此类异常时,将会提示你处理本异常——要么使用try-catch捕获,要么使用方法签名中用throws 关键字抛出,否则编译不通过。(编译器要求必须处理的异常。)

非受检异常:

  • 范围:该类异常包括运行时异常(RuntimeException极其子类)和错误(Error)。
  • 编译器不会进行检查并且不要求必须处理的异常,也就说当程序中出现此类异常时,即使我们没有try-catch捕获它,也没有使用throws抛出该异常,编译也会正常通过

hello,你好 我是辰兮,后续我会继续整理一下Java基础的相关案例,欢迎学习、分享、交流、打卡!

  
 
  • 1

非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞👍 关注❤️ 分享👥 留言💬thanks!!!

2021年10月3日10:38:12 愿你们奔赴在自己的热爱里!

文章来源: blessing.blog.csdn.net,作者:辰兮要努力,版权归原作者所有,如需转载,请联系作者。

原文链接:blessing.blog.csdn.net/article/details/120592350

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。