学习文档(二)

news2024/12/23 9:43:06

异常

这是Java 异常类层次结构图概览

Exception 和 Error 有什么区别?

一、概念与本质

Exception(异常):异常是在程序运行过程中出现的可预料的、可恢复的不正常情况。例如,试图打开一个不存在的文件时,会抛出FileNotFoundException,这是一种异常。异常通常表示程序运行时的意外情况,但这些情况是可以通过合理的错误处理机制来处理的,使程序能够从异常中恢复并继续执行。

Error(错误) : 错误是指在程序运行过程中发生的严重问题,通常是不可恢复的。例如,OutOfMemoryError表示内存耗尽,这种情况下程序通常无法继续正常运行。错误往往是由于系统资源耗尽、虚拟机内部错误等严重问题导致的。

二、处理方式

Exception(异常):

异常可以被捕获(try - catch 语句块)和处理。例如:

 try {
       FileInputStream fis = new FileInputStream("nonexistent.txt");
   } catch (FileNotFoundException e) {
       // 处理文件不存在的情况,比如提示用户重新输入文件名
       System.out.println("文件不存在,请检查文件名");
   }

 有些异常必须在方法签名中声明(受检异常,Checked Exception),如IOException,这样调用该方法的代码就知道需要处理这种异常。

Error(错误):

Error 属于程序无法处理的错误,因为 Error 通常表示严重的系统问题,即使捕获了也很难从这种错误中恢复程序的正常运行。例如,捕获OutOfMemoryError并不能真正解决内存不足的问题,因为此时系统已经处于一种资源极度匮乏的状态。

面向对象的三大特性

封装 

隐藏对象的属性和细节实现,仅对外公开访问方法,控制程序中的读和写的访问级别。

封装的示例代码:

public class Student {
    private int id;//id属性私有化
    private String name;//name属性私有化

    //获取id的方法
    public int getId() {
        return id;
    }

    //设置id的方法
    public void setId(int id) {
        this.id = id;
    }

    //获取name的方法
    public String getName() {
        return name;
    }

    //设置name的方法
    public void setName(String name) {
        this.name = name;
    }
}
继承

继承是面向对象编程中的一个重要概念,它是一种创建新类(称为子类或派生类)的方式,新类从现有的类(称为父类或基类)获取属性(成员变量)和方法。子类继承父类的状态(属性)和行为(方法),使得子类可以重用父类的代码。

关于继承如下 3 点请记住:

  1. 子类拥有父类对象所有的属性和方法(包括私有属性和私有方法),但是父类中的私有属性和方法子类是无法访问,只是拥有
  2. 子类可以拥有自己属性和方法,即子类可以对父类进行扩展。
  3. 子类可以用自己的方式实现父类的方法。

继承的示例代码:

 //继承
class Animal {
       private String name;
       public Animal(String name) {
           this.name = name;
       }
       public void eat() {
           System.out.println(name + " is eating.");
       }
   }
   class Dog extends Animal {
       public Dog(String name) {
           super(name);
       }
       public void bark() {
           System.out.println("The dog is barking.");
       }
   }


//重写
class Dog extends Animal {
       public Dog(String name) {
           super(name);
       }
       @Override
       public void eat() {
           System.out.println(super.getName() + " is eating dog food.");
       }
       public void bark() {
           System.out.println("The dog is barking.");
       }
   }
多态

多态表示一个对象具有多种的状态,具体表现为父类的引用指向子类的实例。

多态的特点:

  • 对象类型和引用类型之间具有继承(类)/实现(接口)的关系;
  • 引用类型变量发出的方法调用的到底是哪个类中的方法,必须在程序运行期间才能确定;
  • 多态不能调用“只在子类存在但在父类不存在”的方法;
  • 如果子类重写了父类的方法,真正执行的是子类重写的方法,如果子类没有重写父类的方法,执行的是父类的方法

try-catch-finally如何使用?

  1. try块:用于捕获异常。其后可接零个或多个 catch 块,如果没有 catch 块,则必须跟一个 finally 块。
  2. catch块:用于处理 try 捕获到的异常
  3. finally 块:无论是否捕获或处理异常,finally 块里的语句都会被执行。当在 try 块或 catch 块中遇到 return 语句时,finally 语句块将在方法返回之前被执行。

代码示例:

try {
    System.out.println("Try to do something");
    throw new RuntimeException("RuntimeException");
} catch (Exception e) {
    System.out.println("Catch Exception -> " + e.getMessage());
} finally {
    System.out.println("Finally");
}

输出结果:

Try to do something
Catch Exception -> RuntimeException
Finally

注意:不要在 finally 语句块中使用 return! 当 try 语句和 finally 语句中都有 return 语句时,try 语句块中的 return 语句会被忽略。这是因为 try 语句中的 return 返回值会先被暂存在一个本地变量中,当执行到 finally 语句中的 return 之后,这个本地变量的值就变为了 finally 语句中的 return 返回值。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构-栈】【位运算优化】力扣3170. 删除星号以后字典序最小的字符串

给你一个字符串 s 。它可能包含任意数量的 ‘’ 字符。你的任务是删除所有的 ’ 字符。 当字符串还存在至少一个 ‘*’ 字符时,你可以执行以下操作: 删除最左边的 ‘’ 字符,同时删除该星号字符左边一个字典序 最小 的字符。如果有多个字典…

【C++篇】虚境探微:多态的流动诗篇,解锁动态的艺术密码

文章目录 C 多态详解(进阶篇)前言第一章:多态的原理1.1 虚函数表的概念1.1.1 虚函数表的生成过程 1.2 虚表的存储位置 第二章:动态绑定与静态绑定2.1 静态绑定2.1.1 静态绑定的实现机制:2.1.2 示例代码: 2.…

从0到1:小区业主决策投票小程序开发笔记

可研 小区业主决策投票小程序: 便于业主参与社区事务的决策,通过网络投票的形式,大大节省了业委会和业主时间,也提高了投票率。其主要功能:通过身份证、业主证或其他方式确认用户身份;小区管理人员或业委会…

YOLO5的修改

在传统的yolov5网络中并不存在注意力机制,但是源代码中存在相关简略的代码: def __init__(self, c, num_heads):"""Initializes a transformer layer, sans LayerNorm for performance, with multihead attention and linear layers.See …

prometheus client_java实现进程的CPU、内存、IO、流量的可观测

文章目录 1、获取进程信息的方法1.1、通过读取/proc目录获取进程相关信息1.2、通过Linux命令获取进程信息1.2.1、top(CPU/内存)命令1.2.2、iotop(磁盘IO)命令1.2.3、nethogs(流量)命令 2、使用prometheus c…

tableau除了图表好看,在业务中真有用吗?

tableau之前的市值接近150亿美金,被saleforce以157亿美金收购,这个市值和现在的蔚来汽车差不多。 如果tableau仅仅是个show的可视化工具,必然不会有这么高的市值,资本市场的眼睛是雪亮的。 很多人觉得tableau做图表好看&#xff…

分布式常见面试题总结

文章目录 1 什么是 UUID 算法?2 什么是雪花算法?🔥3 说说什么是幂等性?🔥4 怎么保证接口幂等性?🔥5 paxos算法6 Raft 算法7 CAP理论和 BASE 理论7.1 CAP 理论🔥7.2 为什么无法同时保…

Echarts合集更更更之树图

实现效果 写在最后🍒 源码,关注🍥苏苏的bug,🍡苏苏的github,🍪苏苏的码云

DGL库之HGTConv的使用

DGL库之HGTConv的使用 论文地址和异构图构建教程HGTConv语法格式HGTConv的使用 论文地址和异构图构建教程 论文地址:https://arxiv.org/pdf/2003.01332 异构图构建教程:异构图构建 异构图转同构图:异构图转同构图 HGTConv语法格式 dgl.nn.…

极客兔兔Gee-Cache Day7

protobuf配置: 从 Protobuf Releases 下载最先版本的发布包安装。解压后将解压路径下的 bin 目录 加入到环境变量即可。 如果能正常显示版本,则表示安装成功。 $ protoc --version libprotoc 3.11.2在Golang中使用protobuf,还需要protoc-g…

【单链表的模拟实现Java】

【单链表的模拟实现Java】 1. 了解单链表的功能2. 模拟实现单链表的功能2.1 单链表的创建2.2 链表的头插2.3 链表的尾插2.3 链表的长度2.4 链表的打印2.5 在指定位置插入2.6 查找2.7 删除第一个出现的节点2.8 删除出现的所有节点2.9 清空链表 3. 正确使用模拟单链表 1. 了解单链…

重头开始嵌入式第四十八天(Linux内核驱动 linux启动流程)

目录 什么是操作系统? 一、管理硬件资源 二、提供用户接口 三、管理软件资源 什么是操作系统内核? 一、主要功能 1. 进程管理: 2. 内存管理: 3. 设备管理: 4. 文件系统管理: 二、特点 什么是驱动…

WebGoat JAVA反序列化漏洞源码分析

目录 InsecureDeserializationTask.java 代码分析 反序列化漏洞知识补充 VulnerableTaskHolder类分析 poc 编写 WebGoat 靶场地址:GitHub - WebGoat/WebGoat: WebGoat is a deliberately insecure application 这里就不介绍怎么搭建了,可以参考其他…

yq 工具

文章目录 yq命令快速 Recipes查找数组中的项目查找并更新数组中的项目深度修剪一棵树对数组中的项目进行多次或复杂的更新按字段对数组进行排序 OperatorsOmitOmit keys from mapOmit indices from array DeleteDelete entry in mapDelete nested entry in mapDelete entry in …

【重学 MySQL】六十三、唯一约束的使用

【重学 MySQL】六十三、唯一约束的使用 创建表时定义唯一约束示例 在已存在的表上添加唯一约束示例 删除唯一约束示例 复合唯一约束案例背景创建表并添加复合唯一约束插入数据测试总结 特点注意事项 在 MySQL 中,唯一约束(UNIQUE Constraint)…

butterfly主题留言板 报错记录 未解决

新建留言板,在博客根目录执行下面的命令 hexo new page messageboard 在博客/source/messageboard的文件夹下找到index.md文件并修改 --- title: 留言板 date: 2018-01-05 00:00:00 type: messageboard ---找到butterfly主题下的_config.yml文件 把留言板的注释…

基于springboot+小程序的智慧物流管理系统(物流1)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于springboot小程序的智慧物流管理系统实现了管理员、司机及用户。 1、管理员实现了司机管理、用户管理、车辆管理、商品管理、物流信息管理、基础数据管理、论坛管理、公告信息管理等。…

帮助自闭症孩子融入社会,寄宿学校是明智选择

在广州这座充满活力与温情的城市,有一群特殊的孩子,他们被称为“星星的孩子”——自闭症儿童。自闭症,这个让人既陌生又熟悉的名词,背后承载的是无数家庭的辛酸与希望。对于自闭症儿童来说,融入社会、与人交流、理解世…

【Linux第一弹】- 基本指令

🌈 个人主页:白子寰 🔥 分类专栏:重生之我在学Linux,C打怪之路,python从入门到精通,数据结构,C语言,C语言题集👈 希望得到您的订阅和支持~ 💡 坚持…

blender 记一下lattice

这个工具能够辅助你捏形状 这里演示如何操作BOX shift A分别创建俩对象一个BOX 一个就是lattice对象 然后在BOX的修改器内 创建一个叫做lattice的修改器 然后指定object为刚刚创建的lattice对象 这样就算绑定好了 接下来 进入lattice的编辑模式下 你选取一个点进行运动&#…