【辰兮要努力】: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!!!
愿你们奔赴在自己的热爱里!