异常处理最佳实践:Java 8中使用Optional和Try-Catch-Finally示例

原创 ゝ一世哀愁。 2024-12-10 08:18 49阅读 0赞

在Java 8中,OptionalTry-Catch-Finally是两种非常实用的异常处理方式。

  1. 使用Optional:
    Optional是Java 8引入的一个容器对象,它表示可能有值的对象。

当一个方法可能会返回空值时,可以使用Optional来包装结果。如果结果为空,调用者可以通过Optional的isPresent()或get()方法检查并获取。

示例代码:

  1. import java.util.Optional;
  2. public class OptionalExample {
  3. public String getBookTitle(String ISBN) {
  4. // 假设图书数据在数据库中
  5. // 从ISBN查询图书标题
  6. if (ISBN == null || ISBN.isEmpty()) {
  7. return Optional.empty().get(); // 返回空Optional
  8. }
  9. // 获取图书信息,这里假设返回值为Optional<String>
  10. Optional<String> bookTitle = getDataService().getBookTitle(ISBN);
  11. // 如果获取到图书标题,将其放入Optional并返回
  12. if (bookTitle.isPresent()) {
  13. return bookTitle.get();
  14. } else { // 如果没有获取到图书标题,则返回空Optional
  15. return Optional.empty();
  16. }
  17. }
  18. }
  1. 使用Try-Catch-Finally:
    在Java中,异常处理通常使用try-catch-finally结构。
  • try块:包含可能会抛出异常的代码。
  • catch块(多个可选):用于捕获并处理特定类型的异常。如果在一个catch块中捕获了异常,那么它不会再被后续的catch块捕获。
  • finally块:无论是否发生异常,都会执行的代码块。通常用来做一些清理工作,如关闭文件、数据库连接等。

示例:

  1. import java.io.BufferedReader;
  2. import java.io.FileReader;
  3. public class TryCatchExample {
  4. public static void main(String[] args) {
  5. String fileName = "input.txt"; // 输入文件名
  6. try (BufferedReader br = new BufferedReader(new FileReader(fileName)))) {
  7. String line;
  8. while ((line = br.readLine()) != null) { // 逐行读取
  9. processLine(line);
  10. }
  11. } catch (IOException e) {
  12. System.err.println("Error reading file: " + e.getMessage());
  13. e.printStackTrace();
  14. }
  15. }
  16. private static void processLine(String line) {
  17. // 这里假设处理一个包含数字的字符串
  18. int number = Integer.parseInt(line);
  19. if (number % 2 == 0) {
  20. System.out.println("Even number: " + number);
  21. } else {
  22. System.out.println("Odd number: " + number));
  23. }
  24. }
  25. }

在这个示例中,我们使用了try-catch-finally结构来处理文件读取可能抛出的IOException

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,49人围观)

还没有评论,来说两句吧...

相关阅读