华杉研发九学习日记17 正则表达式 异常

华杉研发九学习日记17

一,正则表达式 ^ $

作用:

  • 测试字符串内的模式(匹配)
    • 例如,可以测试输入字符串,以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证.
  • 替换文本(替换》
    • 可以使用正则表达式来识别文档中的特定文本,完全删除该文本或者用其他文本替换它.
  • 基于模式匹配丛字符串中提取子字符串(提取》。
    • 可以查找文档内或轮入域内特定的文本。
//  [a-z]   [A-Z]   [a-zA-Z]    [0-9]
//  {n}     {n,}最少n次    {n,m}最少n最多m
String s="abcDdwadawddgFDFSFGSEGSEEGEg";    //  账号  字母组成长度四位
String reg="^[a-zA-Z]{4,}$";    //  ^  开始   $  结尾
System.out.println(s.matches(reg));//      \d 匹配数字  {}不写默认为{1}String pwd="123456";String regpwd="^\\d{6}$";System.out.println(pwd.matches(regpwd));//  验证手机号String phone = "15575942805";String regphone="^(13|15|17|18|19)[0-9]{9}$";if(phone.matches(regphone)){System.out.println("是移动号码");}//  验证日期    2024-7-24
//        String regdate = "^\\d{4}-\\d{1,2}-\\d{1,2}$";String regdate = "^\\d{4}(-\\d{1,2}){1,2}$";String date="2024-07-24";System.out.println(date.matches(regdate));//  验证汉字String name = "李四";String regname="^[\\u4e00-\\u9fa5]{2,}$";System.out.println(name.matches(regname));

正则替换:

//  正则替换
String st1="d小314124s孤a4241243鸡6dADad";
st1=st1.replaceAll("[^\\u4e00-\\u9fa5]","");
System.out.println(st1);    //  小孤鸡

二,异常

所谓异常:就出现了出乎意料的事情。

在代码里:所谓异常也是程序在编写或者运行过程中出现了出乎意料的事情。

异常:就是在java中的代码的运行期或编译器出现的例外情况。

异常的影响:
1.一旦代码出现异常,则会直接在该异常处终止整个java虚拟机

​ 2.一旦java虚拟机终止,则其后的业务代码不在执行

​ 3.—旦出现异常,则整个程序直接终止运行

三,异常的分类

2.1 Error

Error是 Throwable的子类,用于指示程序不应该试图捕获的严重问题

Java程序通常不捕获错误。错误一般发生在严重故障时,它们在Java程序处理的范畴之外。错误例如:栈溢出错误,硬盘空间不足,“虚拟机损坏等等!

Error是系统级别的错误,需要进行硬件处理,代码不可以处理,我们就简单了解即可。

//  Error级别错误之  死递归  栈溢出
public static void method(){int a=11;int b=22;method();
}
public static void main(String[] args) {method();
}

2.2 Exception(异常)

Exception是程序中的异常,即由于代码缺陷(bug)引起的问题.这类问题需要程序员处理.

Exception是代码级别的异常,在程序中如果不处理,会造成程序的不可运行,需要我们处理.

Exception异常主要分为两类

  • 运行期异常
  • 非运行期异常(即编译期异常)

代码阶段

关联图:

在这里插入图片描述

2.2.1 运行时异常

运行期异常就是在代码的运行代码的过程中出现的例外情况。

RunntimeException及其子类都是运行时异常。

运行期异常是Java中的可能出现的例外情况,可以处理也可以不处理,最好处理。

2.2.2 编译时异常

编译期异常就是Java代码在编译的过程中出现的例外情况。

编译期的异常不是Java的中语法错误。

如果不解决编译期的异常,则ava源文件不能编译成字节码文件,不可运行。

编译期的异常必须处理,如果不处理,则IDEA中的Java代码报错。

Exception中除了RunntimeException及子类之外的其他异常都是编译期异常。

四,异常处理

异常有两种解决方案:
1.用try…catch代码块来处理异常。

​ 2.抛出(throws)异常,把异常抛给调用当前方法的代码层去处理异常

4.1 try…catch处理异常

捕捉并处理异常

格式:

try{可能出现异常的代码块;
}catch(异常类){处理异常
}catch(异常类){处理异常
}...finally{无论是否有异常都执行的代码块;}

注意

​ 1.多个catch的异常类从上到下定义时必须类是从小到大的

​ 2.如果出现异常,则会执行第一个满足于该异常的异常类,而不是最精准的 异常类

​ 3.多个catch最多只能执行一个catch异常类

try{        //  可以处理该代码块出现的异常情况String s = null;System.out.println(s.length());int a = 23;int b = 0;System.out.println(a / b);  //  一旦出现异常,后面的语句不执行
//  一般使用 try--catch 就是用来处理异常的
//  一般建议紧跟多个catch  但是只执行一个catch
}catch (NullPointerException e){    //  当捕捉到该异常时,处理的语句System.out.println("NullPointerException");
}catch (ArithmeticException e){System.out.println("ArithmeticException");
}catch(ClassCastException e){System.out.println("ClassCastException");
} catch(RuntimeException e){System.out.println("运行时异常");
}catch (Exception e){System.out.println("其他异常");
}catch(Throwable e){System.out.println("异常");
}finally{System.out.println("不管有没有异常都会执行的语句");
}

4.2 finally

注意:

​ 在try…catch带有方法的返回值时,执行顺序

1、不管有没有出现异常,finally块中代码都会执行;

2、当try和catch中有return时,finally仍然会执行;

3、如果在finally之前遇到了return语句(此时并不会返回结果,而是先把要返回的值保存起来,不管finally中的代码怎么样,返回的值都return时刻的值);

4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值

try {return a + b;}catch(Exception e) {System.out.println("进入异常");return 10;}finally {System.out.println("进入finally");}
}
public static void main(String[] args) {System.out.println(sum(10,20));
}

4.2 throws 处理异常

throws关键字来抛出异常声明。throws 关键字放在方法名的尾部(即方法体左大括号的前面).

throws是捕捉异常但是不处理异常,告诉调用者需要去处理异常。

如果一直通过throws抛出异常声明,如果真的出现了异常,异常最后会被虚拟机捕获到,虚拟机的处理方式是中断程序的执行.

throws其实就是为了快速解决不想处理异常。也能通过编译期的处理方式。

try…catch和throws的处理异常方式的区别:

​ 1.try…catch捕捉并处理异常。不需要二次处理

​ 2.throws捕捉异常但不处理,需要进行二次处理

public static void main(String[] args) throws ParseException {ttry();tthrows();
}//	try..catch
public static void ttry() {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");String str = "2024-07-24";Date date = null;try {date = sdf.parse(str);} catch (ParseException e) {throw new RuntimeException(e);}System.out.println(date);
}//	throws
public static void tthrows() throws ParseException {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");String str = "2024-07-24";Date date= sdf.parse(str);System.out.println(date);
}

五,throw关键字

throw是在java程序应用中可以用来产生异常情况。

throw可以用来抛出编译时异常类和运行时异常类。

即throw可以抛出Throwable体系里所有的异常。

//  请输入你的年龄 --  判断合法性
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的年龄:");
int a = sc.nextInt();
if(a<0||a>150){			//	抛出异常进行提示throw new RuntimeException("你的年龄不合法");
}
System.out.println("年龄:"+a);

六,自定义异常

自定义异常就是根据我们的项目的需求来自己设定异常类,如果出现异常,则直接报出我们自己定义的异常来处理。

自定义异常的分类:

  • 继承RuntimeException类
  • 继承Excption类

6.1 继承RuntimeException类

步骤:

1.定义一个异常类。继承RunntimeException类

2.定义一个有参的和无参的构造器,无参的调用有参的,有参的调用父类有参的构造器

3.在使用时,根据条件来使用throw抛出自定义的异常类

//自定义异常 --  年龄不合法public class AgeNoException extends RuntimeException {public AgeNoException() {this("年龄不合法");}public AgeNoException(String message) {super(message);}
}

6.2 继承Exception类

继承Exception类,相当于编译时异常,需要进行处理(throw或try…catch)

其他同上

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

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

相关文章

ubuntu安装mysql8.0

文章目录 ubuntu版本安装修改密码取消root跳过密码验证 ubuntu版本 22.04 安装 更新软件包列表 sudo apt update安装 MySQL 8.0 服务器 sudo apt install mysql-server在安装过程中&#xff0c;系统可能会提示您设置 root 用户的密码&#xff0c;请务必牢记您设置的密码。…

微信小程序实现聊天界面,发送功能

.wxml <scroll-view scroll-y"true" style"height: {{windowHeight}}px;"><view wx:for"{{chatList}}" wx:for-index"index" wx:for-item"item" style"padding-top:{{index0?30:0}}rpx"><!-- 左…

MySQL数据库安装使用

我们都知道数据库又分为关系型数据库和非关系型数据库&#xff1b; 关系型数据库指采用了关系模型来组织数据的数据库&#xff0c;指的就是二维表格模型。可以先初步理解为Excel表格。非关系型数据库又被称为NoSQL&#xff0c;对NoSQL 最普遍的定义是“非关联型的”&#xff0…

C#测试控制台程序调用Quartz.NET的基本用法

Quartz.Net是常用的任务调用框架之一&#xff0c;既能在客户端程序中使用&#xff0c;也支持在网页程序后台调用。本文结合参考文献4中的示例代码学习其在控制台程序中的基本用法。   VS2022新建控制台项目&#xff0c;在Nuget包管理器中搜索并安装Quartz包&#xff0c;如下所…

SvelteKit - 1. 初始化项目

官方 doc - create a project 1、基本环境 &#xff08;下面是我这里的环境&#xff0c;亲测用 node 14 和 16 install 会报错&#xff09; node&#xff1a;20.9.0 npm&#xff1a;10.1.0 2、初始化项目 npm create sveltelatest my-app cd my-app npm install npm run de…

【C语言报错已解决】Use of Uninitialized Variable

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引言&#xff1a; 在编程中&#xff0c;未初始化的变量是一个常见的问题&#xff0c;它可能导致程序的行为变得不可预测。未初…

Java基本数据类型与String类型的转换

目录 基本数据类型和Strng类型的转换 第一种方法 第二种方法 将字符串转成字符 注意事项 本章练习题 题1 题2 基本数据类型和Strng类型的转换 第一种方法 使用号和" "即可完成转换 第二种方法 第二种方法是通过基本类型的包装类调用parsexx方法 将字符…

理解进程status的二进制位表示及进程等待(是什么,为什么,怎么办)

信号编号&#xff1a;低7位 状态编号&#xff1a;次低8位 1.子进程退出后会变为僵尸进程&#xff0c;将退出结果写入自身的task_struct结构体中 2.wait/waitpid是一个系统调用->OS可以读取子进程的task_struct 1.为什么要进行进程等待&#xff1f; 1.将子进程&#xff…

达梦数据库系列—30. DTS迁移Mysql到DM

目录 1.MySQL 源端信息 2.DM 目的端信息 3.迁移评估 4.数据库迁移 4.1源端 MySQL 准备 4.2目的端达梦准备 初始化参数设置 兼容性参数设置 创建迁移用户和表空间 4.3迁移步骤 创建迁移 配置迁移对象及策略 开始迁移 对象补迁 5.数据校验 统计 MySQL 端对象及数…

Eclipse 搭建 C/C++ 开发环境以及eclipse的使用

一、下载、安装 MinGW 1、下载: 下载地址&#xff1a;MinGW - Minimalist GNU for Windows - Browse Files at SourceForge.net 点击“Download Latest Version”即可 下载完成后&#xff0c;得到一个名为 mingw-get-setup.exe 的安装文件。双击运行&#xff0c;安装即可。 …

Docker容器限制内存与CPU使用

文章目录 Docker 容器限制内存与 CPU 使用内存限额内存限制命令举例使用 `nginx` 镜像学习内存分配只指定 `-m` 参数的情况CPU 限制命令举例验证资源使用Docker 容器限制内存与 CPU 使用 在生产环境中,为了保证服务器不因某一个软件导致服务器资源耗尽,我们会限制软件的资源…

WPF启动失败报System.Windows.Automation.Peers.AutomationPeer.Initialize()错误解决

问题描述 win10系统上WPF程序启动后就崩溃&#xff0c;通过查看崩溃日志如下&#xff1a; 应用程序: xxx.exe Framework 版本: v4.0.30319 说明: 由于未经处理的异常&#xff0c;进程终止。 异常信息: System.TypeLoadException 在 System.Windows.Automation.Peers.Automatio…

META 备受期待的 Llama 3 405B 即将发布

本心、输入输出、结果 文章目录 META 备受期待的 Llama 3 405B 即将发布前言Llama 3 405B或许会彻底改变专用模型的数据质量Llama 3 405B将形成新的模型生态系统:从基础模型到专家组合Llama 3 405B有最高效 API 的竞争Llama 3 405B 基准测试META 备受期待的 Llama 3 405B 即将…

VMware三种网络模式---巨细

文章目录 目录 ‘一.网络模式概述 二.桥接模式 二.NAT模式 三.仅主机模式 四.案例演示 防火墙配置&#xff1a; 虚拟电脑配置 前言 本文主要介绍VMware的三种网络模式 ‘一.网络模式概述 VMware中分为三种网络模式&#xff1a; 桥接模式&#xff1a;默认与宿主机VMnet0绑…

pytest常用命令行参数解析

简介&#xff1a;pytest作为一个成熟的测试框架&#xff0c;它提供了许多命令行参数来控制测试的运行方式&#xff0c;以配合适用于不同的测试场景。例如 -x 可以用于希望出现错误就停止&#xff0c;以便定位和分析问题。–rerunsnum适用于希望进行失败重跑等个性化测试策略。 …

.NET 8+Vue2 部署到Window Server

.NET 8Vue2 部署到Window Server 1 配置环境 1.1 下载安装.NET 8 SDK&#xff0c;下载时需注意目标服务器的系统类型&#xff08;64位 or 32位&#xff09; https://dotnet.microsoft.com/zh-cn/download 1.2 下载安装SQL Server数据库&#xff08;服务和管理工具&#xff…

QT 信号槽机制

核心函数为 QMetaObject::Connection QObject::connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type Qt::AutoConnection) 参数为 1.信号发生对象 2.信号发生对象的信号 3.槽对象 4.槽对象的槽函…

分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法

前言 树形结构是一种很常见的数据结构&#xff0c;类似于现实生活中的树的结构&#xff0c;具有根节点、父子关系和层级结构。 所谓根节点&#xff0c;就是整个树的起始节点。 节点则是树中的元素&#xff0c;每个节点可以有零个或多个子节点&#xff0c;节点按照层级排列&a…

试过可道云teamOS的权限管理,才知道团队协作可以这么顺

在快节奏的工作环境中&#xff0c;团队协作的顺畅与否往往决定了项目的成败。作为团队中的一员&#xff0c;我深知权限管理在团队协作中的重要性。 我们的团队在协作过程中总是被权限问题所困扰。文件共享、资料访问、任务分配……每一个环节都需要小心翼翼地处理权限设置&…

字符函数和字符串函数(二)

一、strncpy函数的使用 拷贝num个字符从源字符串到目的空间。 如果源字符串的长度小于num&#xff0c;则拷贝完源字符串后&#xff0c;在目标后面追加0&#xff0c;直到num个。 #include<stdio.h> #include<string.h> int main() {char arr1[] "abcdef"…