`

Java异常之checked与unchecked

 
阅读更多
首先,java的异常分为Error和Exception。这两类都是接口Throwable的子类。Error及Exception及其子类之间的关系,大致可以用下图简述。



注意事项:

1。 Error仅在java的虚拟机中发生,用户无需在程序中捕捉或者抛出Error。

2。 Exception分为一般的Exception和RuntimeException两类。这里有点让人觉得别扭的是RuntimeException(Unchecked)继承于Exception(Checked)的父类。

PS: checked与unchecked的概念理解:

checked: 一般是指程序不能直接控制的外界情况,是指在编译的时候就需要检查的一类exception,用户程序中必须采用try catch机制处理或者通过throws交由调用者来处理。这类异常,主要指除了Error以及RuntimeException及其子类之外的异常。

unchecked:是指那些不需要在编译的时候就要处理的一类异常。在java体系里,所有的Error以及RuntimeException及其子类都是unchecked异常。再形象直白的理解为不需要try catch等机制处理的异常,可以认为是unchecked的异常。

checked与unchecked在throwable的继承关系中体现为下图:

+-----------+
                 | Throwable |
                 +-----------+
                  /         \
                 /           \
          +-------+          +-----------+
          | Error |          | Exception |
          +-------+          +-----------+
           /  |  \           / | \        \
          \________/       \______/         \
                                        +------------------+
          unchecked        checked      | RuntimeException |
                                        +------------------+
                                         /   |    |      \
                                        \_________________/
                        
                                            unchecked


首先定义一个基本的异常类GenericException,继承于Exception。
package check_unchecked_exceptions;

public class GenericException extends Exception{

    /**
     * 
     */
    private static final long serialVersionUID = 2778045265121433720L;
    
    public GenericException(){
        
    }
    
    public GenericException(String msg){
        super(msg);
    }
}


下面定义一个测试类VerifyException

package check_unchecked_exceptions;

public class VerifyException {

    public void first() throws GenericException {
        throw new GenericException("checked exception");
    }
    
    public void second(String msg){
        if(msg == null){
            throw new NullPointerException("unchecked exception");
        }
    }
    
    public void third() throws GenericException{
        first();
    }
    
    public static void main(String[] args) {
        VerifyException ve = new VerifyException();
        
        try {
            ve.first();
        } catch (GenericException e) {
            e.printStackTrace();
        }

        ve.second(null);
    }

}

上面的例子,结合checked以及unchecked的概念,可以看出Exception这个父类是checked类型,但是其子类RuntimeException (子类NullPointerException)却是unchecked的。
https://www.cnblogs.com/shihuc/p/5201905.html
分享到:
评论

相关推荐

    Checked and Unchecked Exception

    总之,Checked和Unchecked异常是Java异常处理体系的两个主要类别,它们各有特点和应用场景。在使用StrutsTestCase或其他工具进行开发和测试时,正确处理这两类异常是确保代码质量、提高软件可靠性的重要手段。

    详解Java中的checked异常和unchecked异常区别

    Java中的checked异常和unchecked异常区别详解 Java中的checked异常和unchecked异常是Java语言中两种不同的异常类型,它们之间的区别是很多开发者容易混淆的。下面,我们将详细介绍checked异常和unchecked异常的概念...

    通过实例了解java checked和unchecked异常

    通过实例了解 Java checked 和 unchecked 异常 Java 异常分为两种类型:checked 异常和 unchecked 异常。checked 异常是可以在执行过程中恢复的,例如无效的用户输入、文件不存在、网络或者数据库链接错误等。这些...

    高效的java异常处理框架高效的java异常处理框架高效的java异常处理框架

    其中异常类 Exception 又分为运行时异常(RuntimeException)和非运行时异常,这两种异常有很大的区别,也称之为不检查异常(Unchecked Exception)和检查异常(Checked Exception)。 二、异常的捕获和处理 Java ...

    java 异常详解,java异常分类,创建自己的异常

    异常可以分为两大类:-checked 异常和 unchecked 异常。Checked 异常必须在编译时捕捉并处理,而 unchecked 异常可以在编译时忽略,但是在运行时总是会被抛出。 在 Java 中,每个异常都是一个对象,它是 java.lang....

    java异常处理习题

    * `throw` 语句可以抛出 checked 异常和 unchecked 异常。 八、异常处理的 best practice * 尽量避免使用 `catch` 子句来捕捉所有异常,而是根据实际情况捕捉特定的异常类型。 * 使用 `finally` 子句来释放资源和...

    Java的checked和unchecked异常

    Java异常分为两种类型,checked异常和unchecked异常,另一种叫法是异常和错误。  简单地讲,checked是可以在执行过程中恢复的,而unchecked异常则是无法处理的错误。  checked异常:  表示无效,不是程序中...

    java学习之Java异常.ppt

    Java异常处理是编程中至关重要的一个环节,它确保了程序在遇到错误情况时能够优雅地进行错误恢复或者至少提供有用的错误信息。Java异常是程序在运行时遇到的问题,例如数组越界、空指针异常、文件未找到等,这些问题...

    Java异常处理策略研究.pdf

    Java 异常类可以分为两大类:checked 异常和 unchecked 异常。checked 异常是编译器检查的异常,需要在编译时处理;unchecked 异常是运行时异常,不需要在编译时处理。 三、Java 异常处理方法 Java 异常处理方法...

    Java异常处理与自定义异常.pdf

    Java 异常处理与自定义异常 Java 异常处理是 Java 编程语言中一个非常重要的概念,它能够帮助开发者捕获和处理程序中出现的错误,以确保程序的稳定运行和安全。Java 平台为我们提供了丰富和完整的异常类,通过这些...

    Java异常学习资料

    异常分为检查型异常(Checked Exceptions)和非检查型异常(Unchecked Exceptions),前者是程序可以预见并应该处理的异常,后者是程序难以预见,通常与编程错误相关的异常。 2. **异常分类** - **检查型异常**:...

    java异常 异常的概念 应用

    Java异常处理是编程中至关重要的一个环节,它关乎程序的健壮性和稳定性。在Java中,异常(Exception)被用来表示程序运行时发生的错误或不正常情况。异常并不等同于错误,它是程序设计的一部分,允许我们优雅地处理...

    Java异常处理终结篇——如何进行Java异常处理设计 - 望远的个人页面 - 开源中国社区1

    在Java中,异常处理是通过try-catch-finally语句块来实现的,主要涉及两大类异常:编译时异常(Checked Exception)和运行时异常(Unchecked Exception)。编译时异常是Exception类及其子类,它们在编译阶段就必须被...

    Java异常处理体系

    异常类可以进一步分为检查异常(Checked Exceptions)和运行时异常(Unchecked Exceptions)。检查异常在编译时强制处理,通过在方法签名中使用throws声明。运行时异常则不需要显式声明,它们通常与编程错误相关,...

    Java异常框架设计

    这篇博文“Java异常框架设计”可能探讨了如何有效地利用Java的异常处理机制来构建可靠的系统。在这个讨论中,我们将深入理解Java异常的基本概念、异常分类、以及如何通过良好的框架设计提升代码的可读性和可维护性。...

    JAVA异常出错的教程,非常全面。

    Java异常处理是编程过程中的...总的来说,理解和熟练掌握Java异常处理是成为一名合格的Java开发者的关键技能之一。通过这个全面的教程,你将能够更好地诊断和解决Java程序中的异常问题,提升代码质量与程序的稳定性。

    java高端技术课程--Java异常处理详解

    Java异常处理是Java编程中一个至关重要的概念,它关乎到程序的健壮性和稳定性。在Java语言中,异常处理提供了一种机制,使得程序在遇到错误或非正常情况时能够优雅地处理问题,而不是突然崩溃。这个“java高端技术...

    JAVA异常处理的分析与研究.pdf

    JAVA 异常处理的分析与研究 JAVA 异常处理是 JAVA 语言中的一种机制,用于处理程序在运行过程中出现的异常情况。异常处理机制是 JAVA 语言的重要特点之一,它使得 JAVA 语言具有强大的容错能力和高可靠性。 JAVA ...

    java异常 各种异常

    Java异常体系结构主要分为两大类:检查型异常(Checked Exceptions)和非检查型异常(Unchecked Exceptions)。 #### 检查型异常 这类异常是指编译器要求必须处理的异常。如果一个方法声明抛出此类异常,那么调用...

Global site tag (gtag.js) - Google Analytics