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

news2024/9/20 22:45:21

华杉研发九学习日记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.coloradmin.cn/o/1947445.html

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

相关文章

知识工程经典语言 PROLOG基本介绍

定义 PROLOG语言是一种基于Horn子句的逻辑型程序设计语言&#xff0c;也是一种陈述性语言。 PROLOG的语句 PROLOG语言仅有三种语句&#xff0c;称为事实、规则和问题。 事实 格式 <谓词名>(<项表>). 其中谓词名是以小写英文字母开头的字母、数字、下划线等组成的…

使用js实现常见的数据结构---链表,队列,栈,树

注&#xff1a;本文只作为数据结构的实现参考和个人理解 链表 链表是由多个节点&#xff08;node&#xff09;连接起来的&#xff0c;每个节点包含了一些存储的数据和指向下一个节点的指针&#xff0c; 链表&#xff1a;多个连续的节点构成&#xff0c;节点&#xff1a;包含一…

spring-boot3.x整合Swagger 3 (OpenAPI 3) +knife4j

1.简介 OpenAPI阶段的Swagger也被称为Swagger 3.0。在Swagger 2.0后&#xff0c;Swagger规范正式更名为OpenAPI规范&#xff0c;并且根据OpenAPI规范的版本号进行了更新。因此&#xff0c;Swagger 3.0对应的就是OpenAPI 3.0版本&#xff0c;它是Swagger在OpenAPI阶段推出的一个…

大数据-47 Redis 缓存过期 淘汰删除策略 LRU LFU 基础概念

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

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

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

学术研讨 | 区块链与隐私计算领域专用硬件研讨会顺利召开

学术研讨 近日&#xff0c;国家区块链技术创新中心主办&#xff0c;长安链开源社区支持的“区块链与隐私计算领域专用硬件研讨会”顺利召开&#xff0c;会议围绕基于区块链与隐私计算的生成式AI上链、硬件加速、软硬协同等主题展开讨论&#xff0c;来自复旦大学、清华大学、北京…

主题公园- 海豹主题式风格餐厅设计【AIGC应用】

业务背景&#xff1a;海洋馆针对细分客群增设一个打卡主题点位&#xff0c;以海豹主题式餐厅为打卡卖点&#xff0c;效果参见海豹主题式风格。 AIGC概念图制作平台&#xff1a;&#xff08;可灵&#xff09; https://klingai.kuaishou.com/ 关键词&#xff1a; 海豹主题餐厅…

机器学习 | 回归算法原理——随机梯度下降法

Hi&#xff0c;大家好&#xff0c;我是半亩花海。接着上次的多重回归继续更新《白话机器学习的数学》这本书的学习笔记&#xff0c;在此分享随机梯度下降法这一回归算法原理。本章的回归算法原理还是基于《基于广告费预测点击量》项目&#xff0c;欢迎大家交流学习&#xff01;…

Python 教程(二):语法与数据结构

目录 前言专栏列表语法特点实例代码基本数据类型变量命名规则赋值动态类型作用域示例代码 运算符list、set和dict 数据结构 区别1. list&#xff08;列表&#xff09;2. set&#xff08;集合&#xff09;3. dict&#xff08;字典&#xff09; 总结 前言 Python 是一种计算机编…

HarmonyOS实现跨语言交互(Node-API)

Node-API简介 通过Native接口&#xff0c;实现两种代码的交互。 是在Node.js提供的Node-API基础上扩展而来&#xff0c;但与Node.js中的Node-API不完全兼容。本质就是提供了对C/C代码的使用接口&#xff0c;使得两种代码共同工作。规范I/O、CPU密集型、OS底层等能力。 应用场景…

Python | Leetcode Python题解之第264题丑数II

题目&#xff1a; 题解&#xff1a; class Solution:def nthUglyNumber(self, n: int) -> int:dp [0] * (n 1)dp[1] 1p2 p3 p5 1for i in range(2, n 1):num2, num3, num5 dp[p2] * 2, dp[p3] * 3, dp[p5] * 5dp[i] min(num2, num3, num5)if dp[i] num2:p2 1if …

pytest的安装和介绍和 Exit Code 含义

pytest 准备工作&#xff08;在cmd里&#xff09;&#xff1a; 1安装 pip install -U pytest2验证安装 pytest --version # 会展示当前已安装版本3其他的 显示可用的内置函数参数 pytest --fixtures通过命令行查看帮助信息及配置文件选项 pytest --help一、pytets框架中的…

Windows安装go语言开发环境

一、下载安装包 安装包下载地址 下载完毕后双击进行安装。 查看是否安装成功&#xff1a; go version #查看go版本 go env #查看go环境变量正常显示则安装完成。 二、安装vscode 一般开发go语言项目使用vscode工具&#xff1a; 下载地址 下载完毕后双击进行安装。 三…

FPGA开发——D触发器的设计

1、概述 锁存器和触发器有时组合在一起&#xff0c;因为它们都可以在其输出上存储一位&#xff08;1或0&#xff09;。与锁存器相比&#xff0c;触发器是需要时钟信号&#xff08;Clk&#xff09;的同步电路。D 触发器仅在时钟从0 到 1&#xff08;上升沿&#xff09;或 1 到 …

python—NumPy基础(3)

文章目录 算术函数算术函数的使用算术函数中out参数的使用mod()函数的使用 统计函数power()函数的使用median ()函数的使用mean ()函数的使用函数的使用 其他常用函数tile()和repeat()函数的使用roll()函数的使用resize()函数的使用replace()和put()函数的使savetxt()和loadtxt…

可视挖耳勺的正确使用方法:四款宝藏单品,等你来挑选!

现在很多人都关注自己的个护健康&#xff0c;越来越多人开始使用可视挖耳勺。传统挖耳勺很有可以清洁不干净&#xff0c;导致耳耵聍堆积在耳道深处&#xff0c;引起耳朵发炎甚至感染。可视挖耳勺可以在看见耳道内部的情况下精准挖出耳耵聍&#xff0c;一定程度上安全又有效。但…

git命令使用详细介绍

1 环境配置 设置的信息会保存在~/.gitconfig文件中 查看配置信息 git config --list git config user.name设置用户信息 git config --global user.name "有勇气的牛排" git config --global user.email “1809296387qq.com”2 获取Git仓库 2.1 本地初始化一个仓…

Apache压测工具ab(Apache Bench)工具的下载安装和使用示例

场景 Jmeter进行http接口压力测试&#xff1a; Jmeter进行http接口压力测试_接口压测两万量-CSDN博客 上面讲压测工具Jmeter的使用&#xff0c;下面介绍另外一个ab(Apache Bench)压测工具的使用。 apache bench apache bench是apache自带的压力测试工具。 ab不仅可以对ap…

HTML开发笔记:3.图形化开发软件与模版网站

一、Google Web Designer 下载网址&#xff1a;webdesigner.withgoogle.com&#xff08;得挂梯子&#xff09; 可以编辑文字 可以插入图片&#xff0c;快捷键是ctrlshiftI 右侧“大纲”属性中可以调节大小 可以点击右上角在浏览器中预览效果&#xff1a; 二、模版网站 https://…

前端学习3——自学习梳理

1.学习一下盒子模型(盒子就是元素&#xff0c;标签) 盒子模型又分为4种&#xff1a;块级&#xff0c;内联级&#xff0c;内联块级&#xff0c;弹性盒子 (弹性盒子续在下一节) 2.元素的结构 1.盒子模型 <!DOCTYPE html> <html lang"en"> <head>&l…