JavaSE - 面向对象编程05

01 正则表达式

【1】概念:正则表达式是由一些特定字符组成的,代表的是一个规则。

【2】可以用来做什么?

   ① 用于校验数据格式的合法性

   ② 用于在文本中爬取满足要求的内容

   ③ 用于String类的replace方法,split方法的替换和分割

【3】使用正则表达式校验数据格式的说明:要使用Stirng对象调用matches方法,方法里面是一个正则表达式的字符串,返回类型为boolean类型,表示数据格式是否合法。

【4】使用正则表达式校验数据格式的示例:

【5】在文本中爬取满足要求的内容的示例:

【6】用于String类的replace方法,split方法的替换和分割

02 异常

02_01 认识异常

【1】概念:异常就是程序在编译运行过程中可能出现的一些问题。

【2】异常是如何抛出的?答:当一个方法出现了异常,这个方法的内部就会把出现的异常信息封装成一个异常对象,然后向上层调用者抛,如果上层调用者都没有及时处理抛出的异常的话,最后会抛给JVM,但JVM并不会去处理接收的异常,而是会将程序暂停,底层其实也会使用try-catch去捕获相关异常,然后在屏幕上打印出异常对象里的异常信息。

【3】异常类的体系:

【代码层面上面对编译时异常】:

① 使用try-catch捕获异常

② 使用throw关键字把出现的异常抛给上层调用者

02_02 自定义异常

【注意1】:不过自定义的是什么类型的异常,都要在自定义异常内部重写父类的两个构造器,示例如下图:

                  右键Generater -->constructor --> 暂时选前两个,后面的之后碰到再讲。

【注意2】:在抛出自定义编译时异常时,写出来就会报错,此时我们如果就是想让该异常让上层调用者去处理,做法:在该异常出现的方法的参数列表后使用throw关键字抛出异常即可。

02_03 异常的处理

【问题讨论】:在开发中到底该如何处理异常?

【处理方式一】:在最外层调用者处捕获异常,记录异常信息并响应合适的信息给用户。举例:比如说下图中方法A调用方法B,方法B调用方法C,这些方法都有可能出现异常,我们把只要不是最上层调用者的异常都往上抛,即把方法C中的异常抛给方法B,把方法B和方法C的异常抛给方法A,然后在方法A中用try-catch对方法A,B,C中的异常统一进行捕获,并把这些异常信息记录到文件中去,方便程序员查看异常信息定位系统的问题把系统改得更健壮些,同时在最外层捕获到这些异常后我们其实可以响应合适的信息给用户进行浏览,例如相应一些"资源不存在"的语句给用户进行浏览,如果我们没有在最外层捕获异常的话,响应给用户的将是一些乱七八糟的异常信息给用户的体验非常不好。

【处理方式二】:在最外层调用者处捕获异常,将try-catch整体写在一个while循环里面,直到try中的代码执行到最后用break跳出。

【提示】:在最外层调用者捕获异常时,可以对异常一个一个捕获,或者直接用Exception进行泛型捕获(但不推荐)

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

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

相关文章

【学习笔记】Linux系统基础知识3 —— cd命令详解

一、前期准备 1.已经正确安装并成功进入Linux系统 说明:本实验采用的 Redhat 系统(因系统不一致,可能部分显示存在差异) 二、学习内容 提示:学习Linux系统基础命令 cd 命令详解 1、cd命令 1. 功能说明 cd 命令用…

Simple Calculator(算法初阶,代码基础,“纯”手撕)

简单计算器:仅适用无括号加减乘除,算法初阶,代码基础,不调库或模块“纯”手撕。 (笔记模板由python脚本于2024年09月22日 12:08:02创建,本篇笔记适合喜欢用python解决实际问题的coder翻阅) 【学习的细节是欢悦的历程】…

Qt中多语言的操作(以QtCreator为例)

1、首先,我们在代码中与文本相关的且需要支持多语言的地方,用tr来包含多语言key(多语言key是我们自己定义的),如下 //举例 QPushButton* btnnew QPushButton(this); btn->move(20,20); btn->resize(100,50); //…

在 deepin 上除了 Steam,还能怎么玩游戏?

查看原文 前段时间,很多朋友在 deepin 23 上实现了《黑神话:悟空》的通关,那么除了通过 Steam 玩 Windows 游戏之外,还有其他可以使用的游戏平台吗? 回答,当然是可以哒! 游戏平台介绍 今天介…

RHCSA认证-Linux(RHel9)-Linux入门

文章目录 概要一、创建、查看和编辑⽂本1.1 输出重定向1.2 vim编辑器1.3 shell 变量1.5 获取帮助 二、管理本地用户和组2.1 描述用户2.2 切换用户和赋权2.3 用户管理2.4 用户组管理2.5 密码策略 三、控制文件访问3.1 列出文件和文件权限3.2 更改文件权限和拥有者3.3 控制默认权…

昆明理工大学MBA工商管理上课方式

--昆工MBA考研、管理与经济学院、125100工商管理、125602项目管理、199管理类综合能力、F009 政治、F008政治项目管理概论

有关在.Net Core中以TEXT类型将Json格式字段存到数据库的学习

导言 在写个值日接口时发现值日表中的值日时段是可以分多段的,想了想可以使用Json类型来存,不过之前没接触过在后端操作Json格式存到数据库的情况,之后学也了解到了一下方法来实现,故记录一下。 过程 从前端到后端再到数据库的 JS…

千亿大数据平台——MySQL大数据优化

一、自增量的作用 1. 唯一性标识 - 为表中的每一行数据提供一个唯一的、自动生成的标识符,确保数据的唯一性和准确性。 2. 简化数据关联 - 在多个表之间进行关联操作时,自增量字段可以作为便捷的关联键,方便建立和维护表之间的关系…

C#和数据库高级:虚方法

文章目录 一、抽象方法和抽象类中的思考1.1、回顾抽象方法的特点1.2、针对抽象方法问题的引出 二、虚方法的使用步骤2.1、虚方法重写方法的调用2.2、系统自带的虚方法2.3、重写Equals方法2.4、虚方法和抽象方法的比较 三、虚方法和抽象方法的联系3.1、ToString()方法的应用 一、…

字母与符号检测系统源码分享

字母与符号检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer V…

ChatGLM-6B-部署与使用

✨ Blog’s 主页: 白乐天_ξ( ✿>◡❛) 🌈 个人Motto:他强任他强,清风拂山冈! 💫 欢迎来到我的学习笔记! 什么是ChatGLM-6B 一、简介 ChatGLM-6B 是由清华大学知识工程实验室(KEG&…

Python:百度贴吧实现自动化签到

早知道,还是python。 Github项目仓库在这。 相关API 签到贴吧列表 签到分为两个接口,PC端签到一次经验2,而移动端签到则是一次经验6。该用哪个接口已经很明显了。不过这里还是列出PC端的签到API。 # PC端签到接口 # sign_url "https:…

时序预测 | Python实现KAN+LSTM时间序列预测

时序预测 | Python实现KAN+LSTM时间序列预测 目录 时序预测 | Python实现KAN+LSTM时间序列预测预测效果基本介绍程序设计预测效果 基本介绍 时序预测 | KAN+LSTM时间序列预测(Python) KAN作为这两年最新提出的机制,目前很少人用,很适合作为时间序列预测的创新点,可以结合…

python全栈开发《37.列表(元组)的count函数》

元组的count函数的功能和用法与列表的count函数完全一致。 1.count的功能 返回当前列表中某个成员的个数。 2.count的用法 fruits [苹果,西瓜,水蜜桃,西瓜,雪梨] count fruits.count(西瓜) print(count) 运行结果: 2 注意:列表的内置函数count拿到需要…

【读书笔记-《30天自制操作系统》-24】Day25

本篇内容也比较简单。首先开发了蜂鸣器的API,然后增加更多的颜色显示。为了同时运行两个应用程序,又增加了一个命令行窗口。 1. 蜂鸣器 首先是增加蜂鸣器的功能。 蜂鸣器与定时器一样,是由PIT控制的。 蜂鸣器发声的控制: 音高…

Linux:Bash中的文件描述符详解

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 Linux中的所有进程,都拥有自己的文件描述符(File Descriptor, FD),它是操作系统在管理进程和文件时的一种抽象概念。每个文件描述符由一个非负整…

开关电源自动测试系统的测试设备与特色

突破传统测试系统的操作维护困难等限制,NSAT-8000开关电源自动测试系统以其开放式架构和0代码模式,带来了不一样的开关电源自动化测试体验。 开关电源自动测试系统的测试设备 开关电源自动测试系统核心硬件包括:可编程交直流电源、电子负载、…

使用 HFD 加快 Hugging Face 模型和数据集的下载,解决443报错

Hugging Face 提供了丰富的预训练模型和数据集,而且使用 Hugging Face 提供的 from_pretrained() 方法可以轻松加载它们,但是,模型和数据集文件通常体积庞大,用默认方法下载起来非常花时间。 本文将指导你如何使用 HFD&#xff08…

小新 Pro13 + windows 11 家庭中文版(网络适配器及地址配置)

网络适配器位置及地址配置 网络适配器简介 计算机系统:网络适配器详解,全面剖析 网络适配器位置 不同于win11之前的版本,win11的网络适配器的位置如下: 1、右键 右下角的网络图标-》网络和internet设置-》高级网络设置-》可以…

冒泡排序bubble sort

冒泡排序(bubble sort)通过连续地比较与交换相邻元素实现排序。这个过程就像气泡从底部升到顶部一样,因此得名冒泡排序。 算法流程 def bubble_sort(nums: list[int]):"""冒泡排序"""n len(nums)# 外循环&…