get异常处理的必备技能 | 带你学《Java面向对象编程》之八十

简介: 本节结合案例介绍了try、chtch、finally、throw、throws之间互相配合的逻辑关系,并为读者展示了强制性较低的RuntimeException的开发优势。

上一篇:对异常说“我不管” | 带你学《Java面向对象编程》之七十九
【本节目标】
通过阅读本节内容,你将进一步掌握异常处理的相关方法,并能够做到准确地捕获异常与抛出异常。同时,也能了解到RuntimeException的相关信息。

异常处理的标准格式

现在已经学习完成了大部分的异常处理格式:try、catch、finally、throw、throws,那么这些关键字在实际的开发之中往往会一起进行使用。下面通过一个具体的程序进行分析。

现在要求定义一个实现除法计算的方法,在这个方法之中开发要求如下:

  • 在进行数学计算开始与结束的时候进行信息提示;
  • 如果在进行计算的过程之中产生了异常,则要交给调用处进行处理。
class MyMath {
      //异常交给调用处处理则一定要在方法上使用throws
    public static int div(int x , int y) throws Exception {
        int temp = 0 ;
        System.out.println("***【START】除法计算开始。"); 
        try {
            temp = x / y ;
        }catch (Exception e){
            throw e ;    //向上抛异常对象
        }finally{
             System.out.println("***【END】除法计算结束。");   
        }
        return temp ;
    }
}
public class JavaDemo {
    public static void main(String args[]) {
        try {
            System.out.println(MyMath.div(10,0)) ;
        }catch (Exception e) {
            e.printStackTrace() ;
        }
    }
}

image.png
图一 异常处理结果

对于此类操作实际上可以简化省略catch、throw的操作

class MyMath {
      //异常交给调用处处理则一定要在方法上使用throws
    public static int div(int x , int y) throws Exception {
        int temp = 0 ;
        System.out.println("***【START】网络资源连接。"); 
        try {
            temp = x / y ;
        }finally{
             System.out.println("***【END】网络连接关闭。");   
        }
        return temp ;
    }
}
public class JavaDemo {
    public static void main(String args[]) {
        try {
            System.out.println(MyMath.div(10,0)) ;
        }catch (Exception e) {
            e.printStackTrace() ;
        }
    }
}

image.png
图二 异常处理格式

在以后实际开发过程之中,这种异常的处理格式是最为重要的,尤其是当与一些资源进行访问操作的时候尤其重要。

RuntimeException

通过之前的分析可以发现只要方法后面带有throws往往都是告诉用户本方法可能产生的异常是什么,所以这个时候来观察一段代码。

public class JavaDemo {
    public static void main(String args[]) {
        int num = Integer.parseInt("123") ;
        System.out.println(num) ;    //123
    }
}

打开Integer类中的parseInt()方法的定义来观察:
public static int parseInt(String s) throws NumberFormatException
这个方法上明确的抛出了一个异常,但是在处理的时候并没有强制性要求处理。观察一下NumberFormatException类的继承结构,同时也观察一下数学异常类的继承结构:

ArithmeticException: NumberFormatException:
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
java.lang.ArithmeticException
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
java.lang.IllegalArgumentException
java.lang.NumberFormatException

如果现在所有的程序执行上只要使用了throws定义的方法都必须要求开发者进行手工处理,那么这个代码的编写就过于麻烦了。所以在设计的过程之中考虑到代码编写的方便,所以提供有一个灵活的可选的异常处理父类“RuntimeException”,这个异常类的子类可以不需要强制性处理。

面试题:请解释RuntimeException与Exception的区别?请列举出几个常见的RuntimeException。

  • RuntimeException是Excception的子类;
  • RuntimeException标注的异常可以不需要进行强制性处理,而Exception异常必须强制性处理;
  • 常见的RuntimeException异常类型: NumberFormatException、 ClassCastException、 NullPointerException;

想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学

下一篇:教你如何自定义“异常” | 带你学《Java面向对象编程》之八十一
更多Java面向对象编程文章查看此处

相关文章
|
2月前
|
安全 Java 数据库连接
2025 年最新 Java 学习路线图含实操指南助你高效入门 Java 编程掌握核心技能
2025年最新Java学习路线图,涵盖基础环境搭建、核心特性(如密封类、虚拟线程)、模块化开发、响应式编程、主流框架(Spring Boot 3、Spring Security 6)、数据库操作(JPA + Hibernate 6)及微服务实战,助你掌握企业级开发技能。
277 3
|
3月前
|
Java 编译器 数据库连接
Java异常处理:写出更健壮的代码
Java异常处理:写出更健壮的代码
167 0
|
5月前
|
Java
java 多线程异常处理
本文介绍了Java中ThreadGroup的异常处理机制,重点讲解UncaughtExceptionHandler的使用。通过示例代码展示了当线程的run()方法抛出未捕获异常时,JVM如何依次查找并调用线程的异常处理器、线程组的uncaughtException方法或默认异常处理器。文章还提供了具体代码和输出结果,帮助理解不同处理器的优先级与执行逻辑。
131 1
|
7月前
|
运维 Java 程序员
Java中的异常处理方法
本文深入剖析Java异常处理机制,介绍可检查异常、运行时异常和错误的区别与处理方式。通过最佳实践方法,如使用合适的异常类型、声明精确异常、try-with-resources语句块、记录异常信息等,帮助开发者提高代码的可靠性、可读性和可维护性。良好的异常处理能保证程序稳定运行,避免资源泄漏和潜在问题。
201 5
|
9月前
|
Java
Java 面向对象编程的三大法宝:封装、继承与多态
本文介绍了Java面向对象编程中的三大核心概念:封装、继承和多态。
466 15
|
9月前
|
Java 数据库连接 数据处理
探究Java异常处理【保姆级教程】
Java 异常处理是确保程序稳健运行的关键机制。它通过捕获和处理运行时错误,避免程序崩溃。Java 的异常体系以 `Throwable` 为基础,分为 `Error` 和 `Exception`。前者表示严重错误,后者可细分为受检和非受检异常。常见的异常处理方式包括 `try-catch-finally`、`throws` 和 `throw` 关键字。此外,还可以自定义异常类以满足特定需求。最佳实践包括捕获具体异常、合理使用 `finally` 块和谨慎抛出异常。掌握这些技巧能显著提升程序的健壮性和可靠性。
155 4
|
9月前
|
Java 数据安全/隐私保护 开发者
【潜意识Java】深入理解 Java 面向对象编程(OOP)
本文介绍了Java中的面向对象编程(OOP)核心概念,包括封装、继承、多态和抽象。封装通过访问控制保护数据,提高安全性;继承支持代码复用,减少冗余;多态实现灵活的行为调用;抽象则隐藏细节,简化接口设计。掌握这些概念有助于编写高效、灵活且易于维护的代码。文章通过实例详细讲解了每个概念在Java中的应用,并总结了它们的优势。
360 3
|
10月前
|
Java
Java 异常处理:11 个异常处理最佳实践
本文深入探讨了Java异常处理的最佳实践,包括早抛出晚捕获、只捕获可处理异常、不忽略异常、抛出具体异常、正确包装异常、记录或抛出异常但不同时执行、不在finally中抛出异常、避免用异常控制流程、使用模板方法减少重复代码、抛出与方法相关的异常及异常处理后清理资源等内容,旨在提升代码质量和可维护性。
523 3
|
10月前
|
Java 开发者 UED
深入探索Java中的异常处理机制##
本文将带你深入了解Java语言中的异常处理机制,包括异常的分类、异常的捕获与处理、自定义异常的创建以及最佳实践。通过具体实例和代码演示,帮助你更好地理解和运用Java中的异常处理,提高程序的健壮性和可维护性。 ##
153 2
|
10月前
|
Java 程序员
深入理解Java异常处理机制
Java的异常处理是编程中的一块基石,它不仅保障了代码的健壮性,还提升了程序的可读性和可维护性。本文将深入浅出地探讨Java异常处理的核心概念、分类、处理策略以及最佳实践,旨在帮助读者建立正确的异常处理观念,提升编程效率和质量。
214 1