Java 常见场景中需要使用 try 的示例集

Java 常见场景中需要使用 try 的完整示例集 ,覆盖 文件操作、数据库、网络请求、线程、MinIO、日期解析等,并逐行注释,便于直接参考或套用。


1️⃣ 文件操作(File I/O)

java 复制代码
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public void fileExample() {
    // 读取文件
    try (FileInputStream fis = new FileInputStream("data.txt")) {
        int data = fis.read();
        System.out.println("读取成功:" + data);
    } catch (IOException e) {
        // 捕获文件不存在或读取失败的异常
        e.printStackTrace();
    }

    // 写入文件
    try (FileOutputStream fos = new FileOutputStream("output.txt")) {
        fos.write("Hello World".getBytes());
    } catch (IOException e) {
        e.printStackTrace();
    }
}

2️⃣ 数据库操作(JDBC)

java 复制代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public void jdbcExample() {
    Connection conn = null;
    try {
        conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
        // 执行 SQL 操作...
        System.out.println("数据库连接成功");
    } catch (SQLException e) {
        // 捕获连接失败或 SQL 错误
        e.printStackTrace();
    } finally {
        // 关闭连接
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

3️⃣ 网络请求 / HttpClient

java 复制代码
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;

public void httpExample() {
    try {
        URL url = new URL("http://example.com");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        int code = conn.getResponseCode();
        System.out.println("响应码:" + code);
    } catch (IOException e) {
        // 捕获网络异常
        e.printStackTrace();
    }
}

4️⃣ 日期解析

java 复制代码
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;

public void dateExample() {
    String dateStr = "2025-12-04";
    try {
        LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
        System.out.println("解析成功:" + date);
    } catch (DateTimeParseException e) {
        // 捕获解析失败异常
        e.printStackTrace();
    }
}

5️⃣ MinIO 文件操作

java 复制代码
import io.minio.MinioClient;
import io.minio.errors.MinioException;
import java.io.InputStream;

public void minioExample(MinioClient minioClient) {
    try {
        // 判断文件是否存在
        boolean exists = minioClient.statObject(
                io.minio.StatObjectArgs.builder()
                        .bucket("bucketName")
                        .object("file.txt")
                        .build()
        ) != null;
        System.out.println("文件存在:" + exists);
    } catch (MinioException e) {
        // 文件不存在或其他异常
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

6️⃣ 多线程执行

java 复制代码
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;

public void threadExample() {
    CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> {
        return 10 / 0; // 会抛出异常
    });

    try {
        int result = future.get(); // 获取结果,可能抛异常
    } catch (InterruptedException | ExecutionException e) {
        // 捕获线程中抛出的异常
        e.printStackTrace();
    }
}

7️⃣ JSON 解析(Jackson / Gson)

ini 复制代码
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

public void jsonExample() {
    String jsonStr = "{ invalid json }";
    try {
        ObjectMapper mapper = new ObjectMapper();
        JsonNode node = mapper.readTree(jsonStr);
    } catch (Exception e) {
        // 捕获解析失败异常
        e.printStackTrace();
    }
}

8️⃣ 统一示例:调用第三方服务(MinIO、数据库、网络等)

scss 复制代码
public void unifiedExample() {
    try {
        // 可能抛多种异常的操作
        jdbcExample();
        httpExample();
        minioExample(new MinioClient.Builder().endpoint("http://localhost:9000").build());
    } catch (Exception e) {
        // 捕获所有异常,保证程序不中断
        e.printStackTrace();
    }
}

✅ 总结

  • 必须使用 try 的场景:

    1. 文件 I/O(FileInputStream、FileOutputStream)
    2. 数据库操作(JDBC / MyBatis-Plus 可选,但事务异常可捕获)
    3. 网络请求(HttpURLConnection / RestTemplate)
    4. 解析外部数据(JSON、XML、日期)
    5. 第三方 SDK(MinIO、AWS S3 等)
    6. 多线程调用 Future.get() 等可能抛异常的方法
    7. 任意可能抛出 Checked Exception 的操作
  • 可选使用 try 的场景:

    • 保护关键逻辑防止运行时异常(NullPointerException、ArithmeticException 等)
相关推荐
WanderInk13 分钟前
刷新后点赞全变 0?别急着怪 Redis,这八成是 Long 被 JavaScript 偷偷“改号”了(一次线上复盘)
后端
是一个Bug1 小时前
Java基础50道经典面试题(四)
java·windows·python
Slow菜鸟1 小时前
Java基础架构设计(三)| 通用响应与异常处理(分布式应用通用方案)
java·开发语言
吴佳浩1 小时前
Python入门指南(七) - YOLO检测API进阶实战
人工智能·后端·python
我是Superman丶1 小时前
《Spring WebFlux 实战:基于 SSE 实现多类型事件流(支持聊天消息、元数据与控制指令混合传输)》
java
廋到被风吹走2 小时前
【Spring】常用注解分类整理
java·后端·spring
是一个Bug2 小时前
Java基础20道经典面试题(二)
java·开发语言
Z_Easen2 小时前
Spring 之元编程
java·开发语言
leoufung2 小时前
LeetCode 373. Find K Pairs with Smallest Sums:从暴力到堆优化的完整思路与踩坑
java·算法·leetcode