首页 > 编程语言 >【Java】输出填空 异常捕获

【Java】输出填空 异常捕获

时间:2024-06-11 18:32:14浏览次数:25  
标签:count Exception Java 捕获 NoWater finally 填空 raised NoDrinkableWater

class NoWater extends Exception {}
class NoDrinkableWater extends NoWater {}
 
public class FinallyWorks {
    static int count = 0;
    public static void main(String[] args) throws NoWater {
        while ( true ) {
           try {
           count++;
           if ( count == 1 ) { 
             System.out.println("OK");
           } else if ( count == 2 ) {
             System.out.println("Exception raised: NoDrinkableWater");
             throw new NoDrinkableWater();
           } else if ( count == 3 ) {
             System.out.println("Exception raised: NoWater");
             throw new NoWater();
           }
            } catch (NoDrinkableWater e) {
                System.out.println(e);
            } finally {
                System.out.println("finally");
                if ( count == 3 )
                    break;
            }
        }
    }
}

输出如下

OK

finally

Exception raised: NoDrinkableWater

NoDrinkableWater

finally

Exception raised: NoWater

finally

分析如下:


第一次循环(count = 1)

  • count 被增加到 1。
  • 输出 "OK"
  • 没有异常被抛出,因此不进入 catch 块。
  • finally 块被执行,输出 "finally"

第二次循环(count = 2)

  • count 被增加到 2。
  • 输出 "Exception raised: NoDrinkableWater"
  • 抛出 NoDrinkableWater 异常。
  • 异常被 catch 块捕获并处理,输出异常对象的字符串表示(默认调用 toString() 方法),即 "NoDrinkableWater"
  • finally 块被执行,输出 "finally"

第三次循环(count = 3)

  • count 被增加到 3。
  • 输出 "Exception raised: NoWater"
  • 抛出 NoWater 异常。
  • 由于 catch 块只捕获 NoDrinkableWater 异常,所以该异常不会被捕获,直接被抛出到方法签名中的 throws NoWater
  • finally 块被执行,输出 "finally"
  • if (count == 3) 条件为真,break 语句终止循环。

标签:count,Exception,Java,捕获,NoWater,finally,填空,raised,NoDrinkableWater
From: https://blog.csdn.net/2302_78965451/article/details/139595679

相关文章

  • 【Java】7-1 职工排序题 分数 20
    1.为某保险公司设计一个职工管理系统,其中职工类的属性有:职工编号,姓名,性别,团体险业绩,个体险业绩;方法有:每个属性对应的set,get方法;不带参数的构造方法;带参数的构造方法,完成对职工属性的初始化;该类实现接口Comparable,完成对职工总业绩的比较。2.设计一个类,实现Comparator接口,......
  • Java环境配置及配置过程遇到的问题
    配置过程安装完jdk之后,找到jdk的安装目录首先配置JAVA_HOME新建一个系统变量,变量值为jdk的路径再配置pathpath中新建变量值内容为%JAVA_HOME%\bin原因:因为jdk目录下的bin文件夹中存放着java和javac等的exe文件配置完之后打开新的cmd窗口即可javajavac能够显示出用法即可......
  • 深入理解代码耦合度:从无直接耦合到内容耦合(JAVA案例)
    目录前言第一点:无直接耦合第二点:数据耦合第三点:标记耦合第四点:控制耦合第五点:外部耦合第六点:公共耦合第七点:内容耦合总结前言在软件开发中,代码的耦合度是一个非常重要的概念。理解不同类型的耦合度对于设计和维护高质量的代码至关重要。本文将介绍从无直接耦合到......
  • Java数据结构与算法(回溯算法)
    前言回溯算法是一种通过构建问题的解树(或解图)来逐步构建候选解的通用算法。它尝试通过一系列选择来解决问题,选择可能包括移动、添加一个元素到当前解、决定一个解的某部分等。当发现某个选择无法导致一个有效解时,算法会回退(即回溯),撤销该选择,并尝试其他选择。回溯算法通常用于......
  • JavaScript中什么是类,如何使用?
    在JavaScript中,类是一种用于创建对象的模板。它定义了对象的属性和方法,并可以通过实例化来创建具体的对象。类提供了一种结构化的方式来组织和管理代码,使得代码更易于理解和维护。下面我将通过三个例子来详细说明JavaScript中类的概念和使用方法。例子1:创建一个表示人的类cl......
  • Java多线程(一):多线程基础
    多线程技术概述线程与进程进程:一个内存中运行的应用程序每个进程有一个独立的内存空间线程进程中的一个执行路径·共享一个内存空间·线程间自由切换,并发执行·一个进程至少有一个线程·线程实际上是在进程基础之上的进一步划分,一个进程启动之后,里面的若干......
  • 初阶java学习2
    Notepad软件高级记事本有行号,而且Java中的一些特殊单词会高亮显示方便我们对报错进行修改;常见的高级记事本Editplus、Notepad++、Sublime(前端程序员常用)等Notepad++下载方式百度网盘:百度网盘请输入提取码提取码:e36o编码选择ANSI可以让我们输出中文;JAVA的三......
  • 基于Vue+Node.js的高校学业预警系统+10551(免费领源码)可做计算机毕业设计JAVA、PHP、爬
    NodeJS高校学业预警系统摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,教育行业当然也不能排除在外。高校学业预警系统是以实际运用为开发背景,运用软件工程开发方法,采用Node.JS技术构建的一个管理系统。......
  • JavaSE中的IO(输入/输出)字节流字符流
    JavaSE中的IO(输入/输出)知识是一个广泛的领域,它涵盖了如何在Java程序中进行数据的读取和写入。以下是对JavaSE中IO知识的一个清晰归纳:一、基础知识流(Stream)的概念流是一组有顺序的、有起点和终点的字节集合,用于数据传输。Java的I/O流提供了读写数据的标准方法。Java的I/O......
  • 53道Java基础高频题整理(附答案背诵版)
    Java为什么被称为平台无关性语言?Java被称为平台无关性语言,是因为一旦Java代码被编译成字节码,这些字节码就可以在任何安装了Java虚拟机(JVM)的设备上运行,无论这个设备使用的是什么操作系统。这就是“一次编写,到处运行”的理念。Java的这种平台无关性主要得益于Java虚拟机(JVM)......