华杉研发九学习日记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.mzph.cn/diannao/49660.shtml

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

相关文章

vue3 学习笔记17 -- 基于el-menu封装菜单

vue3 学习笔记17 – 基于el-menu封装菜单 前提条件&#xff1a;组件创建完成 配置路由 // src/router/index.ts import { createRouter, createWebHashHistory } from vue-router import type { RouteRecordRaw } from vue-router export const Layout () > import(/lay…

PyTorch 2.0 GPU Nvidia运行库的安装

【图书推荐】《PyTorch深度学习与计算机视觉实践》-CSDN博客 假设读者电脑带有NVIDIA 20 以上系列的显卡。 我们以CUDA 11.7cuDNN 8.2.0&#xff08;其他更高版本的组合&#xff0c;读者可以执行查阅PyTorch官网获得&#xff09;为例&#xff0c;讲解PyTorch 2.0 GPU版本的安…

rt_container_of 作用和实现过程超级详解介绍

目录 作用 ptr 获取 偏移size获取 函数作用 我们先看段代码,了解rt_container_of有什么用处&#xff1a; #include "stdio.h" #define rt_container_of(ptr, type, member) \((type *)((char *)(ptr) - (unsigned long)(&((type *)0)->member)))struct ST…

Chrome谷歌浏览器Console(控制台)显示文件名及行数

有没有这样的困扰&#xff1f;Chrome谷歌浏览器console(控制台)不显示编译文件名及行数? 设置&#xff08;Settings&#xff09;- > 忽略列表&#xff08;lgnore List&#xff09;-> 自定义排除规则&#xff08;Custom exclusion rules&#xff09; 将自定义排除规则…

昇思学习打卡-22-生成式/DCGAN生成漫画头像

文章目录 DCGAN网络数据处理构造网络生成器判别器损失函数优化器 结果展示 我们将学习DCGAN网络如何数据处理、设置网络&#xff0c;包括生成器、判别器、损失函数、优化器等。 DCGAN网络 DCGAN&#xff08;深度卷积对抗生成网络&#xff0c;Deep Convolutional Generative Ad…

go-kratos 学习笔记(1) 安装

简介&#xff1a; Kratos 一套轻量级 Go 微服务框架&#xff0c;包含大量微服务相关框架及工具。 使用步骤&#xff1a; 安装cli工具 go install github.com/go-kratos/kratos/cmd/kratos/v2latest 创建项目 通过 kratos 命令创建项目模板 # 国内拉取失败可使用gitee源 krat…

项目实战--C#实现图书馆信息管理系统

本项目是要开发一个图书馆管理系统&#xff0c;通过这个系统处理常见的图书馆业务。这个系统主要功能是&#xff1a;&#xff08;1&#xff09;有客户端&#xff08;借阅者使用&#xff09;和管理端&#xff08;图书馆管理员和系统管理员使用&#xff09;。&#xff08;2&#…

Mac装虚拟机占内存吗 Mac用虚拟机装Windows流畅吗

如今&#xff0c;越来越多的Mac用户选择在他们的设备上安装虚拟机来运行不同的操作系统。其中&#xff0c;最常见的是使用虚拟机在Mac上运行Windows。然而&#xff0c;许多人担心在Mac上装虚拟机会占用大量内存&#xff0c;影响电脑系统性能。此外&#xff0c;有些用户还关心在…

C++实现LRU缓存(新手入门详解)

LRU的概念 LRU&#xff08;Least Recently Used&#xff0c;最近最少使用&#xff09;是一种常用的缓存淘汰策略&#xff0c;主要目的是在缓存空间有限的情况下&#xff0c;优先淘汰那些最长时间没有被访问的数据项。LRU 策略的核心思想是&#xff1a; 缓存空间有限&#xff1…

Linux:传输层(2) -- TCP协议(1)

目录 1. TCP协议段格式 2. 解包/分用 3. 确认应答(ACK)机制 4. 超时重传机制 5. 连接管理机制 5.1 三次握手 5.2 四次挥手 5.3 TIME_WAIT状态 5.4 CLOSE_WAIT状态 1. TCP协议段格式 源/目的端口号: 表示数据是从哪个进程来, 到哪个进程去; 32位序号/32位确认号: 后面详…

FreeModbus学习——读输入寄存器eMBFuncReadInputRegister

FreeModbus版本&#xff1a;1.6 当功能码为04时&#xff0c;也就是读输入寄存器MB_FUNC_READ_INPUT_REGISTER 看一下它是怎么调用读输入寄存器处理函数的 当功能码为04时&#xff0c;调用读输入寄存器处理函数 这个函数在数组xFuncHandlers中&#xff0c;也就是eMBFuncRead…

实战:MyBatis适配多种数据库:MySQL、Oracle、PostGresql等

概叙 很多时候&#xff0c;一套代码要适配多种数据库&#xff0c;主流的三种库&#xff1a;MySQL、Oracle、PostGresql&#xff0c;刚好mybatis支持这种扩展&#xff0c;如下图所示&#xff0c;在一个“namespace”&#xff0c;判断唯一的标志是iddatabaseId&#xff0c;刚好写…

mysql索引结构

多种数据结构 在数据库索引领域&#xff0c;特别是MySQL的InnoDB存储引擎中&#xff0c;聚簇索引&#xff08;Clustered Index&#xff09;和非聚簇索引&#xff08;也称为二级索引&#xff0c;Secondary Index&#xff09;是两种主要的索引类型。这些索引类型在数据结构的选择…

最优化原理(笔记)

内积是线性代数运算的一个结果&#xff0c;一行*一列。 内积的性质&#xff01; 什么是范数&#xff1f;&#xff1f;&#xff1f; 对称矩阵&#xff1a;关于主对角线对称&#xff01; 正定对称矩阵&#xff1a; 二阶导是正定的&#xff0c;f(x)就是严格的凸函数&#xff01;&a…

spring部分源码分析及Bean的生命周期理解

前言&#xff1a; 本文整体框架是通过refresh方法这个入口进入分析&#xff1a;分析IOC容器的创建及一些Bean的生命周期的知识点&#xff0c;写得确实一般般&#xff0c;感觉自己的有些前置知识并没有理解的很到位&#xff0c;所以&#xff0c;这篇文件先记录一下&#xff0c;…

推荐一款开箱即用、开源、免费的中后台管理系统模版

项目介绍 vue-pure-admin 是推荐一款开箱即用、开源&#xff08;遵循MIT License开源协议&#xff09;、免费的中后台管理系统模版&#xff0c;完全采用 ECMAScript 模块&#xff08;ESM&#xff09;规范来编写和组织代码&#xff0c;使用了最新的 Vue3、 Vite、Element-Plus、…

无人机图像目标检测技术详解

当前研究领域的热点之一。无人机搭载的高清摄像头能够实时捕获大量图像数据&#xff0c;对这些数据进行有效的目标检测对于军事侦察、环境监测、灾害救援等领域具有重要意义。本文将对无人机图像目标检测技术进行详解&#xff0c;包括图像处理技术、目标检测算法、关键技术应用…

pdf2docx - pdf 提取内容转 docx

文章目录 一、关于 pdf2docx主要功能限制 二、安装1、 PyPI2、从remote安装3、从源码安装4、卸载 三、转化 PDF例 1: convert all pages例 2: 转换指定页面例 3: multi-Processing例 4: 转换加密的pdf 四、提取表格五、命令行交互1、按页面范围2、按页码3、Multi-Processing 六…

gitee设置ssh公钥密码频繁密码验证

gitee中可以创建私有项目&#xff0c;但是在clone或者push都需要输入密码&#xff0c; 比较繁琐。 公钥则可以解决该问题&#xff0c;将私钥放在本地&#xff0c;公钥放在gitee上&#xff0c;当对项目进行操作时带有的私钥会在gitee和公钥进行验证&#xff0c;避免了手动输入密…

C语言数据结构课设:基于EasyX前端界面的飞机订票系统

数据结构课程设计说明书 学 院、系&#xff1a; 软件学院 专 业&#xff1a; 软件工程 班 级&#xff1a; 学 生 姓 名&#xff1a; 范 学 号&#xff1a; 设 计 题 目&#xff1a; 飞机订票系统 起 迄 日 期: 2024年6月18日~ 20…