Java 异常处理与正则表达式详解,实例演练及最佳实践

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 在 Java 代码执行期间,可能会发生各种错误,包括程序员编码错误、用户输入错误以及其他不可预料的状况。当错误发生时,Java 通常会停止并生成错误消息,这个过程称为抛出异常。try...catch 语句try 语句允许您定义一段代码块,并在其中测试是否发生错误。catch 语句允许您定义一段代码块,当 try 块中发生错误时执行该代码块。try 和 catch 关键字成对使用,语法如下:

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} 匹配包含X个n的任何字符串的序列
n{x,y} 匹配包含X到Y个n的任何字符串的序列
n{x,} 匹配包含至少X个n的任何字符串

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

相关文章
|
12天前
|
设计模式 消息中间件 算法
【实习总结】Java学习最佳实践!
【实习总结】Java学习最佳实践!
31 3
|
12天前
|
Java 测试技术
Java一分钟之-正则表达式在Java中的应用
【5月更文挑战第14天】正则表达式是Java中用于文本处理的强大力量,通过`java.util.regex`包支持。常见问题包括元字符的理解、边界匹配和贪婪/懒惰量词的使用。错误通常涉及未转义特殊字符、不完整模式或过度匹配。要避免这些问题,需学习实践、使用在线工具和测试调试。示例代码展示了如何验证邮箱地址。掌握正则表达式需要不断练习和调试。
31 2
|
19小时前
|
存储 安全 Java
Java中的异常处理:从基础到高级网络安全与信息安全:防范漏洞与强化意识
【5月更文挑战第27天】本文主要探讨了Java中的异常处理机制,从基础的try-catch-finally结构,到高级的自定义异常和异常链。我们将深入理解异常的概念,学习如何有效地处理异常,以及如何使用异常来提高代码的可读性和可维护性。 【5月更文挑战第27天】随着信息技术的迅猛发展,网络已成为社会运行的重要基础。然而,伴随而来的网络安全威胁也日益增多,尤其是安全漏洞的出现和利用,严重威胁着个人、企业乃至国家的信息资产安全。本文旨在分享关于网络安全漏洞的识别与防护方法、加密技术的应用以及提升个人和企业的安全意识等方面的关键知识,以帮助读者构建更为坚固的网络安全防线。
|
2天前
|
Java 编译器 API
Java中的异常处理:理解、实践与最佳实践
【5月更文挑战第25天】在编程中,错误和异常是难以避免的。对于Java来说,其异常处理机制提供了一种强大而灵活的方式来处理程序运行时的错误。本文将深入探讨Java的异常处理机制,包括如何理解异常,如何使用try-catch-finally语句进行异常处理,以及如何创建自定义异常。最后,我们还将讨论一些关于Java异常处理的最佳实践。
|
2天前
|
Java 数据库连接 开发者
Java中的异常处理:理论与实践
本文深入探讨了Java编程语言中的异常处理机制。首先,我们将解释什么是异常,以及为什么我们需要处理它们。然后,我们将详细介绍Java的异常处理机制,包括try-catch语句和finally语句的使用。最后,我们将通过实例来演示如何在Java程序中有效地处理异常。无论你是Java初学者还是有经验的开发者,这篇文章都将帮助你更好地理解和使用Java的异常处理。
|
3天前
|
Java 编译器 数据库连接
Java异常处理:深入解析与实践
Java异常处理:深入解析与实践
182 1
|
3天前
|
存储 分布式计算 Java
深入探究JAVA编程语言:概念、应用与实例分析
**JAVA**是广泛应用的高级编程语言,以其易学性、跨平台能力和高效的性能著称。它采用面向对象编程,强调封装、继承和多态,且具备平台无关性、内置安全性和多线程支持。JAVA广泛应用于Web开发(如JSP、Servlet)、移动应用(Android开发)、大数据处理(Hadoop、Spark)和桌面应用。通过一个计算两数之和的简单示例,展示了JAVA的易读性和面向对象特性,帮助读者理解JAVA在实际开发中的运用。
|
3天前
|
Java 程序员 编译器
JAVA异常处理机制与最佳实践
Java异常处理机制包括`Error`和`Exception`两类,其中`Exception`分为`RuntimeException`和`Checked Exception`。常用结构为`try-catch-finally`,用于捕获和处理异常。最佳实践建议精确捕获异常、避免空catch块、使用finally释放资源、合理定制异常及分离异常处理与业务逻辑。通过这些方法,可以提升程序的健壮性和可维护性。
|
3天前
|
Java 程序员
滚雪球学Java(39):学会Java异常处理,让你的程序健壮无比
【5月更文挑战第14天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
6 0
滚雪球学Java(39):学会Java异常处理,让你的程序健壮无比
|
4天前
|
Java 开发者
Java中的异常处理:从基础到高级
【5月更文挑战第23天】在本文中,我们将深入探讨Java中的异常处理机制。异常处理是任何编程语言中的关键部分,它帮助我们处理程序运行过程中可能出现的错误。我们将从基础的try-catch块开始,然后逐步深入到更复杂的异常处理策略,如finally块和throw关键字。我们还将讨论如何创建自定义异常,以及如何使用异常链追踪错误源。无论你是Java初学者还是有经验的开发者,本文都将为你提供有关Java异常处理的深入理解。