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 的场景:
- 文件 I/O(FileInputStream、FileOutputStream)
- 数据库操作(JDBC / MyBatis-Plus 可选,但事务异常可捕获)
- 网络请求(HttpURLConnection / RestTemplate)
- 解析外部数据(JSON、XML、日期)
- 第三方 SDK(MinIO、AWS S3 等)
- 多线程调用
Future.get()等可能抛异常的方法 - 任意可能抛出 Checked Exception 的操作
-
可选使用 try 的场景:
- 保护关键逻辑防止运行时异常(NullPointerException、ArithmeticException 等)