异常处理最佳实践:Java 8中使用Optional和Try-Catch-Finally示例
在Java 8中,Optional
和Try-Catch-Finally
是两种非常实用的异常处理方式。
- 使用Optional:
Optional是Java 8引入的一个容器对象,它表示可能有值的对象。
当一个方法可能会返回空值时,可以使用Optional来包装结果。如果结果为空,调用者可以通过Optional的isPresent()或get()方法检查并获取。
示例代码:
import java.util.Optional;
public class OptionalExample {
public String getBookTitle(String ISBN) {
// 假设图书数据在数据库中
// 从ISBN查询图书标题
if (ISBN == null || ISBN.isEmpty()) {
return Optional.empty().get(); // 返回空Optional
}
// 获取图书信息,这里假设返回值为Optional<String>
Optional<String> bookTitle = getDataService().getBookTitle(ISBN);
// 如果获取到图书标题,将其放入Optional并返回
if (bookTitle.isPresent()) {
return bookTitle.get();
} else { // 如果没有获取到图书标题,则返回空Optional
return Optional.empty();
}
}
}
- 使用Try-Catch-Finally:
在Java中,异常处理通常使用try-catch-finally
结构。
try
块:包含可能会抛出异常的代码。catch
块(多个可选):用于捕获并处理特定类型的异常。如果在一个catch
块中捕获了异常,那么它不会再被后续的catch
块捕获。finally
块:无论是否发生异常,都会执行的代码块。通常用来做一些清理工作,如关闭文件、数据库连接等。
示例:
import java.io.BufferedReader;
import java.io.FileReader;
public class TryCatchExample {
public static void main(String[] args) {
String fileName = "input.txt"; // 输入文件名
try (BufferedReader br = new BufferedReader(new FileReader(fileName)))) {
String line;
while ((line = br.readLine()) != null) { // 逐行读取
processLine(line);
}
} catch (IOException e) {
System.err.println("Error reading file: " + e.getMessage());
e.printStackTrace();
}
}
private static void processLine(String line) {
// 这里假设处理一个包含数字的字符串
int number = Integer.parseInt(line);
if (number % 2 == 0) {
System.out.println("Even number: " + number);
} else {
System.out.println("Odd number: " + number));
}
}
}
在这个示例中,我们使用了try-catch-finally
结构来处理文件读取可能抛出的IOException
。
还没有评论,来说两句吧...