`

Checked异常和Runtime异常体系

 
阅读更多

Java的异常被分为两大类:Checked异常和Runtime异常(运行时异常)。所有RuntimeException类及其子类实例被称为Runtime异常;不是RuntimeException类及其子类的异常实例则称为Checked异常。

Checked异常和Runtime异常体系 - quanquan127@126 - 学无止境

       只有Java语言提供了Checked异常,其他语言都没有提供Checked异常。Java认为Checked异常都是可以被处理(修复)的异常,所以Java程序必须显式处理Checked异常。

       对于Checked异常的处理方式有两种:

(1)当前方法明确知道如何处理该异常,程序应该使用try...catch块来捕获该异常,然后对应的catch块中修补该异常。

(2)当前方法不知道如何处理这种异常,应该在定义该方法时声明抛出该异常。

       Runtime异常则更加灵活,Runtime异常无须显式声明抛出,如果程序需要捕捉Runtime异常,也可以使用try...catch块来捕捉Runtime异常。

        

       当使用throw语句自行抛出异常,如果throw语句抛出的异常是Checked异常,则该throw语句要么处于try块里,显式捕获该异常,要么放在一个带throws声明的方法中,即把该异常交给该方法的调用者处理;也就是说当出现了(不管是自行抛出的,还是系统抛出的)Checked异常,就要想办法去处理它,不能不理会它,要么显式地在try...catch块里捕获,处理它;要么把它放在一个带throws声明的方法中,把异常交给该方法的调用者处理。

       如果throw语句抛出的异常是Runtime异常,则该语句无须放在try块里,也无须放在带throws声明抛出的方法中;程序既可以显式使用try...catch来捕获,并处理异常,也可以完全不处理该异常,把异常交给该方法调用者处理。

     看下面程序:

publicclassTestThrow
{
 publicstaticvoid main(String[] args)
 {
  try
  {

//调用带throws声明的方法(声明抛出了Checked异常),必须显式捕获该异常

//否则,必须在main方法中再次声明抛出异常
   throwChecked(4);
  }
  catch(Exception e)
  {
   System.out.println(e.getMessage());
  }

//调用抛出Runtime异常的方法既可以显式捕获该异常,

//也可不理会该异常

  throwRuntime(3);
  System.out.println("Hello World!");
 }

 publicstaticvoid throwChecked(int a)throwsException
 {
  if(a>0)
  {

//自行抛出Exception异常(Checked异常)

//该代码必须处于try快里,或者处于带throws声明的方法中
   thrownewException("a的值不能大于0!");
  }
 }
 publicstaticvoid throwRuntime(int a)
 {
  if(a>0)
  {

//自行抛出RuntimeException异常,既可以显式捕获该异常

//也可以完全不理会该异常,把该异常交给该方法的调用者处理
   thrownewRuntimeException("a的值大于0,不符合要求");
  }
 }
}

 

http://blog.163.com/quanquan127@126/blog/static/6884772520126394334182/

分享到:
评论

相关推荐

    疯狂JAVA讲义

    10.3 Checked异常和Runtime异常体系 367 10.3.1 使用throws声明抛出异常 367 10.4 使用throw抛出异常 369 10.4.1 抛出异常 369 10.4.2 自定义异常类 371 10.4.3 catch和throw同时使用 371 10.4.4 异常链 373 ...

    深入理解Java异常体系Java系列2021.pdf

    Java的异常类层次基于`Throwable`类,分为两大类:Checked异常和Runtime异常(运行时异常)。 - `Error`:`Error`是`Throwable`的子类,表示与虚拟机相关的问题,如系统崩溃、内存溢出等。这些错误通常是不可恢复...

    qw异常体系.txt

    ### Java异常体系概述 #### 什么是异常? 异常是指程序执行过程中出现的问题或错误情况。这些问题是正常的程序流程之外发生的,并且通常是由外部因素引起的,如用户输入错误、文件不存在等。Java通过提供一套异常...

    【09-异常处理】

    •Java的异常被分为两大类:Checked异常和Runtime异常(运行时异常)。所有 RuntimeException类及其子类的实例被称为Runtime异常;不是RuntimeException类及其子类 的异常实例则被称为Checked异常。 Checked...

    Java基础知识-day05 【异常、线程】.pdf

    1.2 异常体系 异常机制其实是帮助我们找到程序中的问题,异常的根类是java.lang.Throwable,其下有两个子类:java.lang.Error和java.lang.Exception,平常所说的异常指java.lang.Exception。 Throwable体系: * ...

    推荐优质Java课程 疯狂Java语言编程 Java入门到进阶教程 10.异常处理(共24页).ppt

    3. **异常的继承体系**:Java中的异常分为两大类:`Checked`异常和`Runtime`异常。`Checked`异常是编译时异常,需要在方法签名中用`throws`关键字声明,或者在方法体内捕获。`Runtime`异常是程序运行时发生的异常,...

    异常&线程习题答案1

    `Exception`则分为两类:编译时异常(也称为Checked异常),如`IOException`,需要在编译期间显式处理;另一类是运行时异常(RuntimeExceptions),如`NullPointerException`,在程序运行时才会出现,编译器不会强制...

    java异常处理

    Java中的异常体系主要基于`Throwable`类,它是所有错误或异常的超类,包含两个直接子类:`Exception`和`Error`。 - **Error**:表示程序无法处理的情况,例如虚拟机错误(`VirtualMachineError`)、线程死锁(`...

    day06 【异常、线程】-笔记.pdf

    在Java中,异常体系的根类是`java.lang.Throwable`,它有两个直接子类:`java.lang.Error`和`java.lang.Exception`。 - `Error`表示严重错误,如系统崩溃,这类错误无法通过程序代码来处理。 - `Exception`表示可...

    day05_异常、线程-每日作业卷-答案2

    而 `Exception` 类则代表程序中可以预见并可能恢复的异常情况,分为编译时异常(checked 异常)和运行时异常(runtime 异常)。运行时异常是 `Exception` 的子类,不需要在方法签名中声明,而编译时异常需要在方法...

    优质资料(2021-2022年收藏)史上最全的Java中所有Exception异常中英文对照.docx

    Java提供了丰富的异常体系,包括标准的Java异常类和自定义异常。以下是一些主要的Java异常及其含义: 1. `ArithmeticException`: 算数异常,当出现除零、溢出等算术运算错误时抛出。 2. `...

    Java異常研究報告(尚未完成)

    本报告将深入探讨Java异常的处理机制、何时使用异常,以及异常体系结构。 首先,Java中的异常是通过`Throwable`类来表示的,它是所有错误和异常的根类。`Throwable`有两个直接子类:`Error`和`Exception`。`Error`...

    异常、Colletion、List

    2. **编译时异常(Checked Exception)**:这类异常是在编译阶段就需要被处理的异常。常见的例子包括`IOException`、`SQLException`等。当一个方法声明抛出编译时异常时,任何调用该方法的地方都需要处理这个异常,...

    Java 初级软件工程师 认证考试试卷(A卷)及答案.pdf

    10. 异常处理:Java中的异常分为两种,checked异常和runtime exception,即运行时异常,它们的处理方式不同,checked异常需要在代码中显式处理,而runtime exception则不需要。 11. 数组:数组是具有固定长度的同...

    JAVA程序员.doc

    Java中的异常类继承自`Throwable`类,形成了一个层次化的异常体系结构。`Throwable`类有两个直接子类:`Error`和`Exception`。 1. **Error**:表示严重的问题,这些问题是应用程序不应该去捕获的,例如虚拟机错误等...

    oracle认证的java考试(19)

    Java提供了一套完整的异常处理体系,包括异常分类、异常处理方式以及异常抛出等机制。 #### 异常分类 Java异常主要分为三类: 1. **检查性异常**(Checked Exception):这是由`java.lang.Exception`及其子类构成...

    Java基础教程.md.pdf

    ##### 13.5 Checked异常和Runtime异常 - **Checked异常**:编译器要求必须处理的异常。 - **Runtime异常**:程序运行时发生的异常。 ##### 13.6 使用throws抛出异常 - 在方法声明中声明可能抛出的异常。 ##### ...

    JavaScjp大纲讲解官方中文

    - **异常体系**:了解Java的异常分类,如检查型异常(checked exceptions)和运行时异常(runtime exceptions)。 - **try-catch-finally**:如何使用try-catch块捕获并处理异常,finally块的作用和使用场景。 5....

    《Java语言程序设计》-郭磊-电子课件

    - 学习如何自定义异常类,理解checked和unchecked异常的区别。 5. **第05章 Java中的多线程** - 介绍并发编程的基础,包括线程的创建(Thread类和Runnable接口)。 - 讨论线程同步和通信的方法,如synchronized...

    java常见面试题指南.pdf

    - **定义**:Java中的异常分为两大类:编译时异常(Checked Exception)和运行时异常(Runtime Exception)。 - **实现方式**:通过throw抛出异常,try-catch-finally捕获异常,throws声明异常。 ### 多线程 #### ...

Global site tag (gtag.js) - Google Analytics