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

您所在的位置:网站首页 exceptiondemo 【Java基础】打卡学习Java异常处理(案例详解)

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

2024-04-23 16:33| 来源: 网络整理| 查看: 265

【辰兮要努力】: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"); } }

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

捕获程序在运行过程中产生的异常 捕获程序在运行过程中产生的异常 验证如果不捕获异常能否执行后续的程序 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、 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("捕获程序在运行过程中产生的异常"); }

直接看结果吧在这里插入图片描述解答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基础的相关案例,欢迎学习、分享、交流、打卡!

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

愿你们奔赴在自己的热爱里!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3