06_正则与异常处理

正则表达式

基础演示
public class Test {public static void main(String[] args) {System.out.println(check("7029622989"));  // true}public static boolean check(String userId) {return userId != null && userId.matches("[1-9]\\d{5,19}");  // 非0数字开头,全部是数字,长度是6~20}
}
爬虫小案例
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Test {public static void main(String[] args) {String data = "我们都是追梦人\n" +"小明的电话是15697534597"+"12545798632是小花的电话"+"公司的邮箱地址123@qq.com"+"今天天气很好啊,666"+"还行吧,88啦";// 1. 定义表达式的规则String regex = "[1-9]\\d{10}";// 2. 把字符串封装成一个 Pattern 对象Pattern pattern = Pattern.compile(regex);// 3. 通过 Pattern 对象去获取查找内容的匹配器对象Matcher matcher = pattern.matcher(data);// 4. 通过循环,爬取信息while (matcher.find()){String res = matcher.group();System.out.println(res);}}
}

异常

认识异常

Error:代表系统级别错误,Error 不是给我们程序员用的,通常开发人员不必理会

Exception:异常

  • 运行时异常:RuntimeException及其子类,编译阶段不会出现错误提醒,运行时出现的异常(如:数组索引越界)
  • 编译时异常:编译阶段就会出现错误提醒的(如:日期解析异常)

处理异常的两种方法:

  • 抛出异常:throws,在方法上使用 throws 关键字,可以将方法内部出现的异常抛出去给调用者处理
  • 捕获异常:try…catch,直接捕获程序出现的异常
自定义异常

自定义"运行时异常":只有在程序运行时才会提示异常

public class Test {public static void main(String[] args) {// 需求:保存一个合法的年龄try {saveAge(999);} catch (Exception e) {e.printStackTrace();}System.out.println("over");}public static void saveAge(int age) {if (age > 0 && age < 150) {System.out.println("Successful");} else {// throw 抛这个异常对象出去throw new AgeIllegalRuntimeException("Age is illegal, Your age is '" + age + "'");}}
}// 注意!一定要继承 RuntimeException 类,才能成为一个自定义的运行时异常类
class AgeIllegalRuntimeException extends RuntimeException {public AgeIllegalRuntimeException() {}// 重写构造器之————封装异常的原因public AgeIllegalRuntimeException(String message) {super(message);}
}

自定义"编译时异常":写代码的过程中就提示异常

public class Test {public static void main(String[] args) {// 需求:也是保存一个合法的年龄try {saveAge(666);} catch (Exception e) {e.printStackTrace();}System.out.println("over");}public static void saveAge(int age) throws AgeIllegalException {if (age > 0 && age < 150) {System.out.println("Successful");} else {// throw 抛这个异常对象出去// throws 用在方法上,抛出方法内部的异常throw new AgeIllegalException("Age is illegal, Your age is '" + age + "'");}}
}// 注意!一定要继承 Exception 类,才能成为一个自定义的编译时异常类
class AgeIllegalException extends Exception {public AgeIllegalException() {}public AgeIllegalException(String message) {super(message);}
}
异常处理

捕获异常,记录异常并响应合适的信息给用户

import java.io.FileInputStream;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;public class Test {public static void main(String[] args) {try {run1();} catch (Exception e) {System.out.println("错误了哦~~~");  // 显示给用户看e.printStackTrace();  // 记录异常,显示给管理员看}}public static void run1() throws Exception {SimpleDateFormat obj = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date data = obj.parse("2023-11-25 12:25");run2();}public static void run2() throws Exception {// 读取文件InputStream is = new FileInputStream("E:/img.png");}
}

捕获异常,尝试重新修复

import java.util.Scanner;public class Test {public static void main(String[] args) {// 尝试修复while (true) {try {System.out.println(getMoney());break;} catch (Exception e) {System.out.println("请您输入合法的数字!");}}}public static double getMoney() {Scanner sc = new Scanner(System.in);while (true) {System.out.println("请输入合适的金额:");double money = sc.nextDouble();if (money >= 0) {return money;} else {System.out.println("你输入的金额对方不满意!");}}}
}

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

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

相关文章

DPDK系列之三十七IO处理

一、介绍 如果一条通信链路要想达到最优的效果&#xff0c;一定是整体上每个环节都要有最佳的节奏协调控制而不一定是每个环节都是最优。这个在计算机的数据处理上就更是明显。一般来说&#xff0c;IO的速度是最低的&#xff0c;至少在可见的时光里要想超越CPU和内存还是很难的…

Scope 模块

Scope 模块可以连接任何类型的实数信号线 (不支持复数)。 波形显示界面主要包括两个部分: Scope 独有的工具栏、波形显示区域。 波形显示界面默认是黑色背景, 当有单个信号输入时, 信号线是黄色的。 Scope 模块也有菜单栏, 只不过默认将其句柄和显示都隐藏起来, 可以通过下面…

技术类知识汇总(二)

在自己日常学习javaweb的过程中&#xff0c;做的一些笔记和总结&#xff0c;汇总如下&#xff1a; Springboot项目的静态资源(html&#xff0c;css&#xff0c;js等前端资源)默认存放目录为&#xff1a;classpath:/static classpath:/public classpath:/resources"三层架…

java-hprof 文件是什么

一、是什么 hprof 文件是 Java进程所使用的内存情况在某一时间的一次快照&#xff08;Heap Profile 的缩写&#xff09;&#xff0c;格式为java_pidxxxxx*.hprof 二、文件里面有什么 1、所有的对象信息 对象的类信息、字段信息、原生值(int, long等)及引用值 2、所有的类信…

一键下载Python各版本中的最新版

一、背景需求 下载Python的安装包非常简单&#xff0c;只需要去官网就可以了&#xff1a;https://www.python.org/downloads/windows/ 但是有时候你可能需要环境测试&#xff0c;需要安装很多版本的Python。 一个一个找倒是也可以&#xff0c;但是我做了个自动筛选的脚本&am…

Kafka-Consumer

Kafka消费者 消费者 与生产者对应的是消费者&#xff0c;应用程序可以通过KafkaConsumer来订阅主题&#xff0c;并从订阅的主题中拉取消息。 消费者与消费者组 Kafka的消费者&#xff08;Consumer&#xff09;负责订阅Kafka中的主题&#xff08;Topic&#xff09;&#xff…

Web 安全之证书透明(Certificate Transparency)详解

目录 证书透明性的概念 数字证书和颁发机构 证书透明的起源 证书透明的工作原理 证书透明的实现方法 证书透明的优点 浏览器和客户端对证书透明的支持情况 小结 证书透明&#xff08;Certificate Transparency, CT&#xff09;是网络安全领域中的一个重要概念&#xff…

车载以太网-数据链路层-MAC

文章目录 车载以太网MAC(Media Access Control)车载以太网MAC帧格式以太网MAC帧报文示例车载以太网MAC层测试内容车载以太网MAC(Media Access Control) 车载以太网MAC(Media Access Control)是一种用于车载通信系统的以太网硬件地址,用于在物理层上识别和管理数据包的传…

5 个适用于 Windows 的顶级免费数据恢复软件

对于计算机来说&#xff0c;最重要的是用户数据。除了您的数据之外&#xff0c;有关计算机的其他所有内容都是可替换的。这三个是数据丢失的最常见原因&#xff1a; 文件/文件夹删除丢失分区分区损坏 文件/文件夹删除 文件/文件夹删除是最常见的数据丢失类型。大多数时候&am…

《微信小程序开发从入门到实战》学习三十一

3.4 开发参与投票页面 3.4.9 显示投票结果 在实际使用中&#xff0c;一个用户不能对同一个投票进行重复提交&#xff0c;因此需要向服务器端提交投票结果和提交用户ID。另外页面&#xff0c;需要完善。用户提交完投票后 &#xff0c;还需要显示投票目前的结果&#xff0c;提交…

C语言进阶之笔试题详解(1)

引言&#xff1a; 对指针知识进行简单的回顾&#xff0c;然后再完成笔试题。 ✨ 猪巴戒&#xff1a;个人主页✨ 所属专栏&#xff1a;《C语言进阶》 &#x1f388;跟着猪巴戒&#xff0c;一起学习C语言&#x1f388; 目录 引言&#xff1a; 知识简单回顾 指针是什么 指针变…

1 时间序列模型入门: LSTM

0 前言 循环神经网络&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;是一种用于处理序列数据的神经网络。相比一般的神经网络来说&#xff0c;他能够处理序列变化的数据。比如某个单词的意思会因为上文提到的内容不同而有不同的含义&#xff0c;RNN就能够很好…

2023-3年CSDN创作纪念日

机缘 今天开开心心出门去上班&#xff0c;就收到了一个csdn私信&#xff0c;打开一看说是给我惊喜来着&#xff0c;我心想csdn还能给惊喜&#xff1f;以为是有什么奖品或者周边之类的&#xff0c;结果什么也没有&#xff0c;打开就是一份信&#x1f602;。 也挺不错的&#xf…

Python基础入门例程67-NP67 遍历字典(字典)

最近的博文: Python基础入门例程66-NP66 增加元组的长度(元组)-CSDN博客 Python基础入门例程65-NP65 名单中出现过的人(元组)-CSDN博客 Python基础入门例程64-NP64 输出前三同学的成绩(元组)-CSDN博客 目录 最近的博文: 描述

1.6 C语言之数组概述

1.6 C语言之数组概述 一、数组二、练习 一、数组 所谓数组&#xff0c;就是内存中一片连续的空间&#xff0c;可以用来存储一组同类型的数据 数组有下标&#xff0c;从0开始&#xff0c;可以理解为是给数组中的元素编号&#xff0c;便于后续寻址访问 我们来编写一个程序&…

SparkSQL之Optimized LogicalPlan生成过程

经过Analyzer的处理&#xff0c;Unresolved LogicalPlan已经解析成为Analyzed LogicalPlan。Analyzed LogicalPlan中自底向上节点分别对应Relation、Subquery、Filter和Project算子。   Analyzed LogicalPlan基本上是根据Unresolved LogicalPlan一对一转换过来的&#xff0c;…

量子计算的世界:探索叠加态与Python编程

1.量子计算概述 量子计算是一种利用量子力学的原理来进行信息处理的技术。它与传统的计算机科学有着根本的不同&#xff0c;主要体现在以下几个方面&#xff1a; 1.基本原理 量子比特&#xff08;Qubit&#xff09;&#xff1a; 传统计算机使用比特作为信息的基本单位&#x…

针对哈希冲突的解决方法

了解哈希表和哈希冲突是什么 哈希表&#xff1a;是一种实现关联数组抽象数据类型的数据结构&#xff0c;这种结构可以将关键码映射到给定值。简单来说哈希表&#xff08;key-value&#xff09;之间存在一个映射关系&#xff0c;是键值对的关系&#xff0c;一个键对应一个值。 …

foobar2000 突然无法正常输出DSD信号

之前一直在用foobar2000加外置dac听音乐&#xff0c;有一天突然发现听dsd的时候&#xff0c;dac面板显示输出的是PCM格式信号&#xff0c;而不是DSD信号&#xff0c;这让我觉得很奇怪&#xff0c;反复折腾了几次&#xff0c;卸载安装驱动什么的&#xff0c;依然如此&#xff0c…