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 异常处理与正则表达式详解,实例演练及最佳实践的更多相关文章

  1. Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)

    位运算符主要针对二进制,它包括了:“与”.“非”.“或”.“异或”.从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算.下面 ...

  2. Java 正则表达式详解_正则表达式

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  3. java之Matcher类详解

    在JDK 1.4中,Java增加了对正则表达式的支持. java与正则相关的工具主要在java.util.regex包中:此包中主要有两个类:Pattern.Matcher. Matcher  声明: ...

  4. Rxjava2 介绍与详解实例

    目录 前言 RX介绍 Rx模式 Rx使用依赖: Rxjava的入门基础 1. Observable 2. Flowable 3. Single 4. Completable 5. Maybe 6. S ...

  5. Java 8 Stream API详解--转

    原文地址:http://blog.csdn.net/chszs/article/details/47038607 Java 8 Stream API详解 一.Stream API介绍 Java8引入了 ...

  6. JavaScript正则表达式详解(一)正则表达式入门

    JavaScript正则表达式是很多JavaScript开发人员比较头疼的事情,也很多人不愿意学习,只是必要的时候上网查一下就可以啦~本文中详细的把JavaScript正则表达式的用法进行了列表,希望 ...

  7. JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解

    二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...

  8. java反射机制深入详解

    java反射机制深入详解  转自:http://www.cnblogs.com/hxsyl/archive/2013/03/23/2977593.html 一.概念 反射就是把Java的各种成分映射成 ...

  9. 国际化,java.util.ResourceBundle使用详解

    java.util.ResourceBundle使用详解   一.认识国际化资源文件   这个类提供软件国际化的捷径.通过此类,可以使您所编写的程序可以:          轻松地本地化或翻译成不同的 ...

  10. java.util.ResourceBundle使用详解

    java.util.ResourceBundle使用详解   一.认识国际化资源文件   这个类提供软件国际化的捷径.通过此类,可以使您所编写的程序可以:          轻松地本地化或翻译成不同的 ...

随机推荐

  1. zookeeper运行时dos窗口一闪而过

    错误:从官网下载zookeeper解压到本地之后,鼠标双击运行zkServer.cmd文件,dos窗口一闪而过,看不到错误原因: 解决方法:通过dos窗口执行zkServer.cmd文件,对应的错误信 ...

  2. 【LeetCode数组#4滑动窗口】长度最小的子数组+子数组最大平均数I

    长度最小的子数组 力扣题目链接(opens new window) 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度.如果不存 ...

  3. 服务网关ZUUL过滤器

    过滤器两个功能: 1.其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础: 2.过滤器功能则负责对请求的处理过程进行预干预,是实现请求校验.服务聚合等功能的基础. 有4类 ...

  4. Codeforces Round 303 (Div. 2)C. Kefa and Park(DFS、实现)

    @ 目录 题面 链接 题意 题解 代码 总结 题面 链接 C. Kefa and Park 题意 求叶节点数量,叶节点满足,从根节点到叶节点的路径上最长连续1的长度小于m 题解 这道题目主要是实现,当 ...

  5. Linux 系统编程从入门到进阶 学习指南

    引言 大家好,我是小康 ,今天我们来学习一下 Linux 系统编程相关的知识.Linux 系统编程是连接高级语言和硬件的桥梁,它对深入理解计算机系统至关重要.无论你是打算构建高性能服务器还是开发嵌入式 ...

  6. 适用于AbpBoilerplate的RocketChat Api库

    RocketChat 适用于AbpBoilerplate的RocketChat Api库 Rocket.Chat 是一个免费.开源.可扩展.高度可定制且安全的平台,可让您与团队进行交流和协作.共享文件 ...

  7. Redis稳定性之战:AOF日志支撑数据持久化

    ★ Redis24篇集合 1 介绍 AOF(Append Only File)持久化:以独立日志的方式存储了 Redis 服务器的顺序指令序列,并只记录对内存进行修改的指令. 当Redis服务发生雪崩 ...

  8. 摆脱鼠标操作 - vscode - vim - 官方说明文档 github上的,防止打不开,这里发一个

    Key - command done - command done with VS Code specific customization ️ - some variations of the com ...

  9. ACS 构词法 + 44个后缀 记忆方法

    抖音号:九词君-不用语法学好英语

  10. 基于ADS1292芯片的解决方案之芯片简析

    基本资料: ADS1292芯片是多通道同步采样 24 位 Δ-Σ 模数转换器 (ADC),它们具有内置的可编程增益放大器 (PGA).内部基准和板载振荡器. ADS1292 包含 便携式 低功耗医疗心 ...