Java题集练习4

Java题集练习4

1 异常有什么用?

用来找到代码中产生的错误 防止运行出错

2 异常在java中以什么形式存在?

异常在java中以类的形式存在,分为运行时异常和编译期异常,他们都在类Exception中

3 异常是否可以自定义?如何自定义异常?

异常是可以进行自定义的,可以使用through关键字来自定义异常

4 三种处理方式 五个关键字如何使用?

第一种处理方式

可以通过throws关键字在定义方法时抛出异常,代码如下
public class ExceptionExample {
    //定义一个遍历数组方法,可能会出现数组下标越界异常
    //我们使用throws关键字来抛出这个异常
    public static void select(int[] ints) throws ArrayIndexOutOfBoundsException{
        for (int i :
                ints) {
            System.out.print(i);
            if (i != ints[ints.length - 1]){
                System.out.print(" ");
            }
        }
    }

    public static void main(String[] args) {
        int[] ints = {1,2,3,4,5,6};
        select(ints);
    }
}

第二种处理方式

我们可以使用try/catch语句块将可能会产生异常的语句写进去,来防止发生异常时代码无法运行
public class ExceptionExample {
    //定义一个遍历数组方法,可能会出现数组下标越界异常
    public static void select(int[] ints){
        //将可能会发生数组越界异常的语句写进try/catch语句块内
        try {
            for (int i :
                    ints) {
                System.out.print(i);
                if (i != ints[ints.length - 1]){
                    System.out.print(" ");
                }
            }
        }
        //catch用来抛出异常
        catch (ArrayIndexOutOfBoundsException o){
            System.out.println("数组下标越界异常");
            o.printStackTrace();
        }
    }

    public static void main(String[] args) {
        int[] ints = {1,2,3,4,5,6};
        select(ints);
    }
}

第三种处理方式

我们可以在具体什么情况下会发生异常时使用throw关键字来抛出异常,也会防止代码发生异常无法运行
public class ExceptionExample {
    //定义一个遍历数组查询某个元素方法,可能会出现数组下标越界异常
    public static void select(int[] ints,int index){
        int var = 0;
        //如果我们要查询的下标大于数组的长度,就使用throw抛出异常
        if (index > ints.length - 1){
            throw new ArrayIndexOutOfBoundsException();
        }
        for (int i = 0;i < index;i++){
            if (i == index - 1){
                var = ints[i];
            }
        }
    }

    public static void main(String[] args) {
        int[] ints = {1,2,3,4,5,6};
        select(ints,7);
    }
}

五个关键字应该如何使用

首先我们要了解这五个关键字是什么,它们分别是try,catch,finally,throw,throws

在这里插入图片描述

上面这张图诠释了他们各自的使用场所及功能

5 error和exception的差别

单从英文意思上来讲,error表示为错误,exception表示为异常。错误时不可逆转的,而异常是可以被规避的。

从java语言中来说,Error和Exception类都是Throwable的子类,只有Throwable类的实例才可以被抛出或者被捕获,他是异常处理机制的基本类型

1 Exception是指在程序正常运行中可以预料的意外情况,可以被捕获并进行相应的处理

2 Error是指正常情况下不大可能出现的情况,绝大部分的Error都会岛主程序出现非正常情况,不可被修复,常见的OutOfMemoryError就是Error的子类

6 两种异常都是什么,都什么时候用

Exception分为可检查异常和不可检查异常,可检查异常在源代码里必须被显示捕获,所以也叫编译时异常;不可检查异常又叫运行时异常,比如NullPointerException空指针异常和ArrayIndexOutOfBoundsException数组下标越界异常,通常是可以编码避免的逻辑错误,具体根据需要来判断是否需要捕获,并不会在编译器强制要求

7 举例五个以上检查异常

检查异常常见的有:
  • ClassNotFoundException 找不到具有指定名称的类的定义异常

  • DataFormatException 数据格式异常

  • IOException 输入输出异常

  • SQLException 提供有关数据库访问错误或其他错误信息的异常

  • FileNotFoundException 当试图打开指定路径名表示的文件失败异常

  • EOFException 当输入过程中意外到达文件或流末尾时异常

8 final,finally,finalize差别

三者从使用方式和作用来看没有任何共同点,只是长得相似容易混淆

final

  • final修饰的类没有子类,即不能被继承

  • final修饰的方法不能被重写

  • final修饰的属性值不能被改变

finally

  • finally用来抛出异常,通常与try/catch语句块搭配使用,他的代码块内用于写一些无论是否发生异常都会执行的语句块,通常用于一些流的关闭

finalize

  • finalize方法用于垃圾回收,一般情况下不需要我们去实现finalize,当对象被回收的时候需要释放一些资源,比如socket链接,在对象初始化时创建,整个生命周期内有效,那么需要实现finalize方法,关闭这个链接;但是当调用finalize方法后,并不意味着GC会里立即回收该对象,所以有可能真正调用的时候,对象又不需要回收了,然后到了真正要回收的时候,因为之前调用过一次,这次就不会调用了,会产生问题,所以不推荐使用finalize方法
在这里插入代码片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/903529.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年【金属非金属矿山(地下矿山)安全管理人员】考试报名及金属非金属矿山(地下矿山)安全管理人员复审考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 金属非金属矿山&#xff08;地下矿山&#xff09;安全管理人员考试报名是安全生产模拟考试一点通生成的&#xff0c;金属非金属矿山&#xff08;地下矿山&#xff09;安全管理人员证模拟考试题库是根据金属非金属矿山…

海洋生物图像分割系统:一键训练

海洋生物图像分割系统源码&#xff06;数据集分享 [yolov8-seg-C2f-EMSCP&#xff06;yolov8-seg-dyhead等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Global Al l…

基于SpringBoot+Vue+MySQL的房屋租赁系统

系统展示 系统背景 随着城市化进程的加速和人口流动性的增加&#xff0c;房屋租赁市场逐渐成为城市生活的重要组成部分。然而&#xff0c;传统的房屋租赁方式存在诸多问题&#xff0c;如信息不对称、交易成本高、租赁关系不稳定等&#xff0c;这些问题严重影响了租赁市场的健康…

第三届“基于模型的系统工程及数字工程大会”盛况回顾,同元软控发表精彩演讲

2024年10月27日&#xff0c;第三届“基于模型的系统工程及数字工程大会”&#xff08;MBSE&DE 2024&#xff09;在合肥召开。本届大会是中国系统工程学会第23届学术年会重点分会场论坛之一&#xff0c;由中国系统工程学会科技系统工程专业委员会联合中国图学学会数字化设计…

云原生笔记

#1024程序员节|征文# 单页应用(Single-Page Application&#xff0c;SPA) 云原生基础 云原生全景内容宽泛&#xff0c;以至于刚开始就极具挑战性。 云原生应用是高度分布式系统&#xff0c;它们存在于云中&#xff0c;并且能够对变化保持韧性。系统是由多个服务组成的&#…

在 AMD GPU 上构建解码器 Transformer 模型

Building a decoder transformer model on AMD GPU(s) — ROCm Blogs 2024年3月12日 作者 Phillip Dang. 在这篇博客中&#xff0c;我们展示了如何使用 PyTorch 2.0 和 ROCm 在单个节点上的单个和多个 AMD GPU 上运行Andrej Karpathy’s beautiful PyTorch re-implementation …

LabVIEW Modbus通讯稳定性提升

在LabVIEW开发Modbus通讯程序时&#xff0c;通讯不稳定是一个常见问题&#xff0c;可能导致数据丢失、延迟或错误。为了确保通讯的可靠性&#xff0c;可以从多个角度进行优化&#xff0c;以下是一些有效的解决方案&#xff0c;结合实际案例进行分析。 1. 优化通讯参数设置 通讯…

rtp协议:rtcp包发送和接收规则和报告!

RTCP Packet Send and Receive Rules&#xff1a; 发送和接收 RTCP 包的规则在此列出。允许在多播环境或多点单播环境中运行的实现必须满足第 6.2 节中的要求。这样的实现可以使用本节定义的算法来满足这些要求&#xff0c;或者可以使用其他算法&#xff0c;只要其性能等同或更…

泄密?不可能!谨记10个确保公司数据不泄密的措施,你必须了解!(企业防泄密的最佳选择)

泄密&#xff1f;不可能&#xff01;这10个确保公司数据不泄密的措施&#xff0c;你必须谨记&#xff01; 在数据为王的时代&#xff0c;企业信息的保密性直接关系到其核心竞争力与市场地位。 然而&#xff0c;数据泄露事件却屡见不鲜&#xff0c;给企业的声誉和利益带来巨大…

Nacos异地备份方案

Nacos sync的实现样例 项目地址 软件下载&#xff1a;https://github.com/nacos-group/nacos-sync/releases 官方文档&#xff1a;https://nacos.io/docs/v2/ecology/use-nacos-sync/#_top 介绍 NacosSync是一个支持多种注册中心的同步组件&#xff0c;基于Spring boot开发…

STL-常用容器-list

1list基本概念 **功能&#xff1a;**将数据进行链式存储 链表&#xff08;list&#xff09;是一种物理存储单元上非连续的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接实现的 链表的组成&#xff1a;链表由一系列结点组成 结点的组成&#xff1a;一个是存储…

qt配置https请求

qt应用版本 windows 32位 先说下心理路程&#xff0c;你能遇到的我都遇到了&#xff0c;你能想到的我都想到了&#xff0c;怎么解决看这一篇就够了&#xff0c;从上午12点到晚上12点几乎没离开电脑&#xff08;除了吃饭&#xff09;&#xff0c;对于openssl这种用的时候无感&am…

Outlook域名邮箱设置教程:配置烽火邮箱?

Outlook域名邮箱同步技巧&#xff1f;如何注册outlook域名邮箱&#xff1f; Outlook域名邮箱不仅提供了高效的邮件管理功能&#xff0c;还能与企业的域名相结合&#xff0c;提升品牌形象。烽火将详细介绍如何在Outlook中配置烽火邮箱&#xff0c;确保您能够顺利使用Outlook域名…

RabbitMQ替换默认端口

前提&#xff1a;客户通过漏洞扫描&#xff0c;发现rabbitmq中的erlang是默认端口4369&#xff0c;出于安全的考虑&#xff0c;需要将erlang的端口修改为其他的端口。 1.查看默认erlang的默认端口 netstat -plnt | grep 4369 2.关闭rabbitmq rabbitmqctl stop&#xff08;注…

Elastic Stack - FileBeat 入门浅体验

Filebeat 是 Elastic Stack 中的一个轻量级日志转发器&#xff0c;主要用于收集和转发日志数据。Filebeat 作为代理安装在您的服务器上&#xff0c;可以监控您指定的日志文件或位置&#xff0c;收集日志事件&#xff0c;并将其转发到 Elasticsearch 或 Logstash 进行索引。 一…

HTTP cookie 与 session

一.Cookie 定义&#xff1a; 是服务器发送到用户浏览器并保存在浏览器上的一小块数据&#xff0c; 它会在浏览器之后向同一服务器再次发起请求时被携带并发送到服务器上。 通常&#xff0c; 它用于告知服务端两个请求是否来自同一浏览器&#xff0c; 如保持用户的登录状态、 …

Windows下将网盘挂载到本地使用(Docker+AList+RaiDrive)

文章目录 安装安装Docker安装Alist安装RaiDrive 安装 安装Docker Windows下安装Docker网上有很多教程&#xff0c;也可以参考我写的博客链接 3.1章节 安装Alist 官网 “切换中文”并找到“使用指南” ”安装“–>"使用Docker” 打开cmd执行如下命令启动容器 do…

怎样消除原唱只留伴奏?一键消音!伴奏版轻松制作

在音乐制作、翻唱或卡拉OK等场合&#xff0c;我们经常需要消除歌曲中的原唱声音&#xff0c;只保留伴奏部分。这样做可以让其他人更容易地在原有伴奏的基础上进行演唱或创作。但是&#xff0c;要怎样才能有效地消除原唱&#xff0c;同时又不损害伴奏的质量呢&#xff1f;本文将…

【vue+Naive UI】自定义tabbar切换,以及使用n-data-table展示对应表格实战

效果图如上 ##### 一、具体代码 <template><div :style="{ width }" class="top-tab-selector"><divclass=

springboot092安康旅游网站的设计与实现(论文+源码)_kaic

毕业设计&#xff08;论文&#xff09; 基于JSP的安康旅游网站的设计与实现 姓  名 学  号 院  系 专  业 指导老师 2021 年 月 教务处制 目 录 目 录 摘 要 Abstract 第一章 绪论 1.1 研究现状 1.2 设…