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 等)
相关推荐
心之语歌11 分钟前
基于注解+拦截器的API动态路由实现方案
java·后端
None32112 分钟前
【NestJs】基于Redlock装饰器分布式锁设计与实现
后端·node.js
初次攀爬者14 分钟前
Kafka + KRaft模式架构基础介绍
后端·kafka
洛森唛18 分钟前
Elasticsearch DSL 查询语法大全:从入门到精通
后端·elasticsearch
拳打南山敬老院1 小时前
Context 不是压缩出来的,而是设计出来的
前端·后端·aigc
初次攀爬者1 小时前
Kafka + ZooKeeper架构基础介绍
后端·zookeeper·kafka
LucianaiB1 小时前
Openclaw 安装使用保姆级教程(最新版)
后端
华仔啊1 小时前
Stream 代码越写越难看?JDFrame 让 Java 逻辑回归优雅
java·后端
ray_liang2 小时前
用六边形架构与整洁架构对比是伪命题?
java·架构
哈密瓜的眉毛美2 小时前
零基础学Java|第五篇:进制转换与位运算、原码反码补码
后端