Java 异常处理与正则表达式详解,实例演练及最佳实践
Java 异常 - Try...Catch
在 Java 代码执行期间,可能会发生各种错误,包括程序员编码错误、用户输入错误以及其他不可预料的状况。
当错误发生时,Java 通常会停止并生成错误消息,这个过程称为抛出异常。
try...catch 语句
try 语句允许您定义一段代码块,并在其中测试是否发生错误。
catch 语句允许您定义一段代码块,当 try 块中发生错误时执行该代码块。
try 和 catch 关键字成对使用,语法如下:
try {
// 要尝试的代码块
} catch (Exception e) {
// 处理错误的代码块
}
示例:
public class Main {
public static void main(String[] args) {
try {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]); // 数组越界错误
} catch (Exception e) {
System.out.println("Something went wrong.");
}
}
}
输出:
Something went wrong.
finally 语句
finally 语句允许您在 try...catch 语句之后执行一段代码,无论 try 块中是否发生错误。
示例:
public class Main {
public static void main(String[] args) {
try {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]); // 数组越界错误
} catch (Exception e) {
System.out.println("Something went wrong.");
} finally {
System.out.println("The 'try catch' is finished.");
}
}
}
输出:
Something went wrong.
The 'try catch' is finished.
throw 关键字
throw 关键字允许您创建自定义异常。
throw 关键字通常与异常类型一起使用。Java 中提供了许多异常类型,例如:
- ArithmeticException
- FileNotFoundException
- ArrayIndexOutOfBoundsException
- SecurityException
示例:
public class Main {
static void checkAge(int age) {
if (age < 18) {
throw new ArithmeticException("Access denied - You must be at least 18 years old.");
} else {
System.out.println("Access granted - You are old enough!");
}
}
public static void main(String[] args) {
checkAge(15); // 年龄小于 18 岁
}
}
输出:
Exception in thread "main" java.lang.ArithmeticException: Access denied - You must be at least 18 years old.
at Main.checkAge(Main.java:4)
at Main.main(Main.java:12)
- try...catch 语句用于处理 Java 代码中的异常。
- finally 语句用于确保代码在任何情况下都会执行。
- throw 关键字用于创建自定义异常。
建议:
- 使用 try...catch 语句来处理可能发生的错误。
- 使用 finally 语句来释放资源或执行清理操作。
- 仅在需要时使用 throw 关键字来创建自定义异常。
Java正则表达式
什么是正则表达式?
正则表达式是一系列字符,形成一个搜索模式。当你在文本中搜索数据时,可以使用这个搜索模式描述你要查找的内容。
正则表达式可以是单个字符,也可以是更复杂的模式。
Java没有内置的正则表达式类,但我们可以导入java.util.regex包来使用正则表达式。该包包括以下类:
- Pattern类 - 定义要在搜索中使用的模式
- Matcher类 - 用于搜索模式
- PatternSyntaxException类 - 指示正则表达式模式中的语法错误
示例
查找句子中是否存在单词"hello"的任何出现:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("hello", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher("Visit hello!");
boolean matchFound = matcher.find();
if(matchFound) {
System.out.println("匹配找到");
} else {
System.out.println("未找到匹配");
}
}
}
输出:
匹配找到
示例解释
在这个例子中,在句子中搜索单词"hello"。
- 首先,使用
Pattern.compile()方法创建模式。第一个参数指示正在搜索的模式,第二个参数有一个标志,表示搜索应该是不区分大小写的。第二个参数是可选的。 - 使用
matcher()方法在字符串中搜索模式。它返回一个包含有关所执行搜索的信息的Matcher对象。 find()方法在字符串中找到模式时返回true,未找到时返回false。
标志
compile()方法中的标志更改搜索的执行方式。以下是其中一些:
Pattern.CASE_INSENSITIVE- 在执行搜索时将忽略字母的大小写。Pattern.LITERAL- 在执行搜索时,模式中的特殊字符将不具有任何特殊含义,并且在执行搜索时将被视为普通字符。Pattern.UNICODE_CASE- 与CASE_INSENSITIVE标志一起使用,还可以忽略英语字母以外的字母的大小写。
正则表达式模式
Pattern.compile()方法的第一个参数是模式。它描述了正在搜索的内容。
方括号用于查找一系列字符:
表达式 描述 [abc] 在方括号之间的选项中找到一个字符 [^abc] 在方括号之间找到一个字符,但不是这些字符 [0-9] 在范围0到9之间找到一个字符
元字符
元字符是具有特殊含义的字符:
| 元字符 | 描述 |
|---|---|
| | | 查找由|分隔的任何模式中的任何一个匹配项,例如:cat|dog|fish |
| . | 查找任何字符的一个实例 |
| ^ | 在字符串的开头找到匹配项,例如:^Hello |
| $ | 在字符串的末尾找到匹配项,例如:World$ |
| \d | 查找数字 |
| \s | 查找空白字符 |
| \b | 在单词的开头找到匹配项,如\bWORD,或在单词的结尾找到匹配项,如WORD\b |
| \uxxxx | 查找由十六进制数xxxx指定的Unicode字符 |
量词
量词定义数量:
| 量词 | 描述 |
|---|---|
| n+ | 匹配包含至少一个n的任何字符串 |
| n* | 匹配包含零个或多个n的任何字符串 |
| n? | 匹配包含零个或一个n的任何字符串 |
| n | 匹配包含X个n的任何字符串的序列 |
| n | 匹配包含X到Y个n的任何字符串的序列 |
| n | 匹配包含至少X个n的任何字符串 |
最后
为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎 点赞、收藏、关注
Java 异常处理与正则表达式详解,实例演练及最佳实践的更多相关文章
- Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)
位运算符主要针对二进制,它包括了:“与”.“非”.“或”.“异或”.从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算.下面 ...
- Java 正则表达式详解_正则表达式
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- java之Matcher类详解
在JDK 1.4中,Java增加了对正则表达式的支持. java与正则相关的工具主要在java.util.regex包中:此包中主要有两个类:Pattern.Matcher. Matcher 声明: ...
- Rxjava2 介绍与详解实例
目录 前言 RX介绍 Rx模式 Rx使用依赖: Rxjava的入门基础 1. Observable 2. Flowable 3. Single 4. Completable 5. Maybe 6. S ...
- Java 8 Stream API详解--转
原文地址:http://blog.csdn.net/chszs/article/details/47038607 Java 8 Stream API详解 一.Stream API介绍 Java8引入了 ...
- JavaScript正则表达式详解(一)正则表达式入门
JavaScript正则表达式是很多JavaScript开发人员比较头疼的事情,也很多人不愿意学习,只是必要的时候上网查一下就可以啦~本文中详细的把JavaScript正则表达式的用法进行了列表,希望 ...
- JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解
二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...
- java反射机制深入详解
java反射机制深入详解 转自:http://www.cnblogs.com/hxsyl/archive/2013/03/23/2977593.html 一.概念 反射就是把Java的各种成分映射成 ...
- 国际化,java.util.ResourceBundle使用详解
java.util.ResourceBundle使用详解 一.认识国际化资源文件 这个类提供软件国际化的捷径.通过此类,可以使您所编写的程序可以: 轻松地本地化或翻译成不同的 ...
- java.util.ResourceBundle使用详解
java.util.ResourceBundle使用详解 一.认识国际化资源文件 这个类提供软件国际化的捷径.通过此类,可以使您所编写的程序可以: 轻松地本地化或翻译成不同的 ...
随机推荐
- JAVA对象的生命周期(二)-对象的创建
目录 对象创建的几种方式 类加载检查. 内存分配 初始化零值 设置对象头 执行init方法 对象创建的几种方式 new clone newInstance 反序列化 String s = " ...
- goland快键键防忘
环境: debian下的goland 2018实测: 鼠标button2 == 鼠标中键 光标移动: 跳转光标到刚才的位置: ctrl+win+alt+左/右 按词左右移动光标: ctrl + 左/右 ...
- Python 潮流周刊第 41 期(摘要),赠书5本
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...
- Spring整合mybatis使用xml配置事务
自己准备开始教授Java相关的技术,Spring框架是必须让学生学习的框架之一.里面有一个事务相关的 配置,以前刚学习Spring框架的时候有接触过,只是过了很多年,很多东西都已经淡忘.再来回忆一下 ...
- 接入移动手机号一键登录类的封装,app应用,php服务端类的封装与调用
需求:实现手机号一键登录,由于官方只有java的demo和jar包,没有php的sdk及demo <?php/* * 手机号一键登录加解密 */class Autophone{ const A_ ...
- vscode 自动格式化 好使的配置 setting.json 20210622
一直用idea,今天有个需求得用vscode,发现格式化不好使了 用 vetur 格式化 结果带分行什么的,eslint 过去不了,更新了个好使的配置,记录一下. { "update.mod ...
- WPF之XAML语法
目录 树形结构 对象属性赋值语法 使用标签的Attribute 使用属性元素 扩展:标记扩展(Markup Extensions) 扩展:使用TypeConverter 类映射Atribute与Pro ...
- pfx文件导出pem和私钥,更换网站域名证书
openssl 路径: C:\Program Files\OpenSSL-Win64\bin -- 导出pem证书openssl pkcs12 -in C:\BackUp\Lightning\cert ...
- live555使用NDK21编译出arm64-v8a和armeabi-v7a
一.编译环境 ubuntu环境 NDK21,下载地址链接 live555源码live555源码 二.编写编译脚本 环境和源码弄好后,就可以开始进行编写编译脚本 1 编写arm64-v8a脚本 将下载好 ...
- Linux下编译成静态库和动态库,引入到项目中
目录 配置全局变量 编译动态库和静态库: 动态库编译 静态库编译 AS mk 方式加载静态库和动态库 配置build.gradle 加载静态库方法 将libget.a考入到项目中 配置Android. ...