Java面向对象程序设计 第七章总结_方法的返回值被错误地处理为一个非空的对象-程序员宅基地

技术标签: exception  jvm  Java  java  编程语言  


1. 简述Java Error类与Exception类的区别。

  • 共同点:
    • 都继承自第一层次的Object和第二层次的Throwable类
  • 不同点:
    • Error类:不是需要程序进行捕获和处理的,Error抛出后程序停止运行。
    • Exception类:虚拟机系统根据异常的类型产生相应的异常对象,程序可以继续对抛出的异常进行捕获和相应的处理。

2. 简述异常处理的两种方式,并举例说明区别。

  • 声明抛出处理:

    • RunTimeException或其子类的异常,属于默认声明抛出。可以对其不做任何声名抛出或处理,交由调用该方法的地方处理(main方法交由JVM处理),编译时不会对可能产生异常地方给出提示;
    • 其他异常类必须显示声明抛出。 例如
      public static void main(String args[]) throws IOExceprion;
  • 程序捕获处理:
    通过使用try - catch - [finally]语句块,用来对可能产生异常的代码产生的异常进行捕获,并根据其异常类型进行不同的操作。


3. 选取RuntimeException类的五个子类,编写抛出并捕获上述子类异常的程序。

import java.util.EmptyStackException;
import java.util.Stack;

class A{
    
    int v = 6;
    public int getV() {
    
        return v;
    }
}

public class ExcpOp {
    
    public static void Arithmetic() {
    
        int a = 6, b = 0;
        try{
    
            int c = a / b;
        } catch (ArithmeticException ae) {
    
            System.out.println(ae.getClass().getName()+" has been throw");
        } finally {
    
            System.out.println("ArithmeticEp is over!\n");
        }
    }

    public static void NullPointer() {
    

        try {
    
            A a = null;
            a.getV();
        } catch (NullPointerException npe) {
    
            System.out.println(npe.getClass().getName()+" has been throw");
        } finally {
    
            System.out.println("NullPointer is over!\n");
        }
    }

    public static void EmptyStack() {
    
        Stack s = new Stack();

        try{
    
            s.push(5);
            s.pop();
            System.out.println("Pop 1");
            s.pop();
            System.out.println("Pop 2");
        } catch (EmptyStackException ese) {
    
            System.out.println(ese.getClass().getName()+" has been throw");
        } finally {
    
            System.out.println("EmptyStack is over!\n");
        }
    }

    public static void IndexOutOfBounds() {
    
        int[] a = new int[3];
        for (int i = 0; i<3 ; i++ ) {
    
            a[i] = i;
        }
        try{
    
            System.out.println(a[4]);
        } catch (IndexOutOfBoundsException ioe) {
    
            System.out.println(ioe.getClass().getName()+" has been throw");
        } finally {
    
            System.out.println("EmptyStack is over!\n");
        }
    }

    public static void NegativeArraySize() {
    
        try{
    
            int[] a = new int[-3];
        } catch (NegativeArraySizeException nase) {
    
            System.out.println(nase.getClass().getName()+" has been throw");
        } finally {
    
            System.out.println("NegativeArraySize is over!\n");
        }
    }

    public static void main(String[] args) {
    
        ExcpOp.Arithmetic();
        ExcpOp.EmptyStack();
        ExcpOp.IndexOutOfBounds();
        ExcpOp.NegativeArraySize();
        ExcpOp.NullPointer();
    }

}


4. 仿照例7.9,自己定义一个异常类,并在某场景下抛出该异常对象。

public class MyException extends Exception{
    
    MyException(String msg) {
    
        super(msg);
    }

    public static void Throw(int a) throws MyException {
    
        if(a <= 666) {
    
            throw new MyException(" 输入不666 ");
        }
    }

    public static void main(String[] args) {
    
        int a = 660;
        try{
    
            MyException.Throw(a);
        } catch (MyException me) {
    
            me.printStackTrace();
            a = 668;
        } finally {
    
            System.out.println("此时 a = "+a);
        }
    }
}


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45750637/article/details/109248236

智能推荐

基于modelscope平台搭建百川13b2的对话模型demo_from modelscope import snapshot_download-程序员宅基地

文章浏览阅读482次。基于魔搭平台快速搭建自己的baichuan大模型demo,简单快速一键部署_from modelscope import snapshot_download

索引存储结构和分块(索引)查找_索引存储结构举例-程序员宅基地

文章浏览阅读2.7k次。索引存储结构索引存储结构=数据表+索引表索引表(index blocked table)中的每一项称为索引项,索引项的一般形式:(关键字,地址)举个例子:分块查找的基本思想分块查找又称分块索引查找(index blocked search)是一种介于顺序查找和二分查找之间的查找方法。其基本思想是:(1)将数据表str[0…n-1]均分为b块,前b-1块中记录个数为s=n/b,最后一块即第b块的记录数小于等于s;(2)每一块中的关键字不一定有序,但前一块中的最大关键字必须小于后一块中的最小关键_索引存储结构举例

ICPC训练联盟2021寒假冬令营(5)_2021.01.22_笔记_icpc2021寒假冬令营第五天-程序员宅基地

文章浏览阅读413次。试题链接点我进入代码提交OJ学习笔记-高效排序算法( O(nlogn)时间复杂度 )算法介绍归并排序主要思路• 归并排序,是把待排序的序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序的序列。• 归并排序的算法核心步骤分为两个部分:分解,合并:• 首先,把n 个元素分解为n 个长度为1的有序子表;• 然后,进行两两归并使元素的关键字有序,得到n/2 个长度为2 的有序子表;• 重复上述合并步骤,直到所有元素合并成一个长度为n的有序表 为止。算法图解算法代_icpc2021寒假冬令营第五天

macos安装ffmpeg以及出现问题的解决方案,一次成功-程序员宅基地

文章浏览阅读1.7k次。安装ffmpeg使用brew首先安装brew:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"出现这个:==> Installation successful!安装成功....No changes to formulae...._installing ffmpeg dependency: imath ==> pouring imath-3.1.4.catalina.bottle.

CSDN 周赛填空题,充满恶意的嘲讽-程序员宅基地

文章浏览阅读731次。老顾最近一直在玩 csdn 周赛,没啥想法,就是想票点小玩意,之前从第四十一期开始,题型进行了扩展,增加了填空、判断、单选。扩展题型的周赛,目前是三期,分别是四十一,四十四,四十五。连续三期,老顾的填空题一分没拿到过,嗯,尽管41期是老顾提交的bug,自己给自己扣的分。

02-区块链入门之windows 安装以太坊 ethereum 客户端 (win7-64)_window.ethereum详解-程序员宅基地

文章浏览阅读990次。本文目录1.下载以太坊2.开始安装 3. 开启以太坊挖矿 以太坊(Ethereum)是一个运行智能合约的去中心化平台(Platform for Smart Contract),平台上的应用按程序设定运行,不存在停机、审查、欺诈、第三方人为干预的可能。以太坊平台由Golang、C++、Python 等多种编程语言实现。前段时间的The DAO事件让以太坊平台损失惨重,以太坊也分裂成ETC和ETH,..._window.ethereum详解

随便推点

java常用排序算法——二分查找(折半查找)概述-程序员宅基地

文章浏览阅读585次,点赞15次,收藏8次。java常用排序算法——二分查找(折半查找)概述

Plugging an Unplugged Pluggable Database-程序员宅基地

文章浏览阅读108次。1.unplugTo unplug a PDB, you first close it and then generate an XML manifest file. The XML file contains information about the names and the full paths of the tablespaces, as we..._pluggable database is not closed

长虹电器旗舰店被“薅”倒闭背后的风险与防控_长虹电器失败风险的原因-程序员宅基地

文章浏览阅读265次。10月10日,某大型电商平台上一家名为“长虹厨房电器旗舰店”的商家公告称,因为某推广机构的恶意欺骗,标价60多元的电热水壶,被不到10元钱买下拍了20万单。由此产生巨大的损失,甚至有破产倒闭风险,恳请消费者退款。有网友认为“薅羊毛”不能薅秃了羊,决定申请退款;也有网友观点认为,消费者并无过错,商家理应为自己的行为负责,营销活动中出现了问题不应该将责任推给消费者,电商平台应该加强没有契约精神的商家加强监管。这并非电商平台上首次因“薅羊毛”造成电商损失的情况。2019年1月,有网友称拼多多存在重大Bug_长虹电器失败风险的原因

计算机组成原理运算器的编程实现_计算机组成原理编写代码完成累加器和寄存器的内容相减-程序员宅基地

文章浏览阅读7.8k次,点赞4次,收藏13次。一、实验目的 1、加深对计算机中运算器的基本概念、运算方法和基本原理的理解。 2、提高学生对计算机编程语言掌握的熟练程度。二、实验内容 运用一种编程语言实现计算器的基本功能。 思考: 1、计算机中数据是如何表示的? 2、计算机中二进制数的加、减、乘、除四则运算如何实现? 3、运算器的基本结构和功能有哪些?三.实验结果分析 计算器运行结果: 1: 计算机中数据是如何表示的?计算机_计算机组成原理编写代码完成累加器和寄存器的内容相减

嵌入式C语言基础知识-程序员宅基地

文章浏览阅读1.5k次,点赞51次,收藏31次。C语言基础知识:输入输出、运算符、算数运算符、赋值运算符、比较运算符、位运算符、类型转换、控制语句 if语句、if...else语句 、三目运算符、else...if 语句、switch语句、跳转关键字、break、continue、goto.

c语言笔记1 输入和输出注意事项,常量 变量 static_c语言输出行列式分析和注意-程序员宅基地

文章浏览阅读795次。格式输入、格式输出、宏常量、静态局部变量,静态全局变量,bool类型变量,_c语言输出行列式分析和注意

推荐文章

热门文章

相关标签