• 【Java】异常处理(一)


    🌺个人主页:Dawn黎明开始

    🎀系列专栏:Java
    每日一句:什么都不做,才会来不及

    📢欢迎大家:关注🔍+点赞👍+评论📝+收藏⭐️


    文章目录

    📋前言

    一.🔐什么是异常

    1.1🔑案例引入

    1.2🔑Throwable类

    1.3🔑Throwable类的子类

    二.🔐编译时异常与运行时异常

    2.1🔑编译时异常

    2.2🔑运行时异常


    📋前言

         尽管人人希望自己身体健康,处理的事情都能顺利进行,但在实际生活中总会遇到各种状况,比如感冒发烧,工作时电脑蓝屏、死机等。同样,在程序运行的过程中,也会发生各种异常状况,例如,程序运行时磁盘空间不足网络连接中断加载的类不存在等。针对这种情况,Java语言引入了异常,以异常类的形式对这些非正常情况进行封装,通过异常处理机制对程序运行时发生的各种问题进行处理。本文将对异常进行详细讲解。

    一.🔐什么是异常

    1.1🔑案例引入

         下面通过一个案例认识一下什么是异常,在本案例中,计算以0为除数的 表达式,运行程序并观察程序的运行结果。

    代码如下👇🏻

    1. package Example;
    2. public class Example01 {
    3. public static void main(String[] args) {
    4. int result = divide(4, 0); // 调用divide()方法,第2个参数为0
    5. System.out.println(result);
    6. }
    7. //下面的方法实现了两个整数相除
    8. public static int divide(int x, int y) {
    9. int result = x / y; // 定义一个变量result记录两个数相除的结果
    10. return result; // 将结果返回
    11. }
    12. }

       运行结果👇🏻

    说明 

     由上图可知,程序发生了算术异常(ArithmeticException),提示运算时出现了被0除的情况。异常发生后,程序会立即结束,无法继续向下执行

    1.2🔑Throwable类

         Java提供了大量的异常类,每一个异常类都表示一种预定义的异常,这些 异常类都继承自java.lang包下的Throwable类

         由上图中可知,Throwable类是所有异常类的父类,它有两个直接子类Error类和Exception类,其中,Error类代表程序中产生的错误,Exception类代表程序中产生的异常

    1.3🔑Throwable类的子类

    (1)Error类称为错误类,它表示Java程序运行时产生的系统内部错误或资源耗尽的错误,这类错误比较严重,仅靠修改程序本身是不能恢复执行的。例如,使用java命令去运行一个不存在的类就会出现Error错误。

    (2)Exception类称为异常类,它表示程序本身可以处理的错误,在Java程序中进行的异常处理,都是针对Exception类及其子类的。在Exception类的众多子类中有一个特殊的子类——RuntimeException类,RuntimeException类及其子类用于表示运行时异常。 Exception类的其他子类都用于表示编译时异常。​

    二.🔐编译时异常与运行时异常

    2.1🔑编译时异常

         在实际开发中,经常会在程序编译时产生异常,这些异常必须要进行处理,否则程序无法正常运行,这种异常被称为编译时异常,也称为checked异常。在Exception类中,除了RuntimeException类及其子类,Exception的其他子类都是编译时异常。编译时异常的特点是Java编译器会对异常进行检查,如果出现异常就必须对异常进行处理,否则程序无法通过编译。

    处理编译时期的异常有两种方式,具体如下:

    (1)使用try…catch语句对异常进行捕获处理。

    (2)使用throws关键字声明抛出异常,调用者对异常进行处理。

    2.2🔑运行时异常

         另外还有一种异常是在程序运行时产生的,这种异常即使不编写异常处理代码,依然可以通过编译,因此被称为运行时异常,也称为unchecked异常。RuntimeException类及其子类都是运行时异常。运行时异常的特点是在程序运行时由Java虚拟机自动进行捕获处理的,Java编译器不会对异常进行检查。也就是说,当程序中出现这类异常时,即使没有使用try…catch语句捕获或使用throws关键字声明抛出,程序也能编译通过,只是程序在运行过程中可能报错。

    在Java中,常见的运行时异常有多种,具体如下所示。

         运行时异常一般是由程序中的逻辑错误引起的,在程序运行时无法恢复。例如,通过数组的索引访问数组的元素时,如果索引超过了数组范围,就会发生索引越界异常,代码如下所示:      

    1. package Example;
    2. public class Example02 {
    3. public static void main(String[] args) {
    4. //运行时异常(在编译阶段是不需要处理的,是代码运行时出现的异常)
    5. int []arr= {1,2,3,4,5};
    6. System.out.println(arr[5]);
    7. }
    8. }

    分析

          在上面的代码中,由于数组arr的length为5,最大索引应为4,当使用arr[5]访问数组中的元素就会发生数组索引越界的异常。

  • 相关阅读:
    外包干了一个月,技术明显进步。。。。。
    【C语言】指针的“最后一站”【进阶版】
    Telegram bot i南航打卡 部署 vercel 无服务器微服务
    c++game大全
    为什么要学ib物理课程?
    Eclipse插件RCP桌面应用开发的点点滴滴
    [论文阅读] 颜色迁移-Correlated Color Space
    《canvas》之第12章 其他应用
    Android简易音乐重构MVVM Java版-LiveData+用户登录+http模块(十)
    SPDK EAL: No free 2048 kB hugepages reported on node 0
  • 原文地址:https://blog.csdn.net/2301_80760873/article/details/134516488