gpt4 book ai didi

java - 我应该故意捕获检查异常吗?

转载 作者:行者123 更新时间:2023-12-01 19:17:06 25 4
gpt4 key购买 nike

我设计了一个上传文件处理如下:

UploadFileHandler是提供检查方法的主类。

public class UploadedFileHandler {

public static void handleUploadedFile(String fileName) {
try {
checkFile(fileName);
} catch (BadUploadedFileException ex) {
deleteFile(fileName);
}
}

private static void checkFile(String fileName) {
new UploadedFileChecker(fileName).check();
}

private static void deleteFile(String fileName) {
//...code to delete the file.
}
}

UploadedFileChecker 进行检查。

public class UploadedFileChecker {
private String fileName;

public UploadedFileChecker(String fileName) {
this.fileName = fileName;
}

public void check() throws BadUploadedFileException {
checkFileFormat();
scanVirus();
}

private void checkFileFormat() {
// if file format unsupported
throw new BadUploadedFileException();
}

private void scanVirus() {
// if contains virus
throw new BadUploadedFileException();
}
}

BadUploadedFileException 声明如下:

public class BadUploadedFileException extends RuntimException {

}

我让它扩展 RuntimeException 因为它使 UploadedFileChecker 中的代码变得干净,但这样做会使其成为未经检查的异常。因此,handleUploadedFile 中的 catch 是不合适的,因为我们不应该捕获未经检查的异常。

我的问题是,我应该捕获 BadUploadedFileException 还是使其扩展 Exception 并将“抛出 BadUploadedFileException”附加到 UploadedFileChecker 的每个方法。

最佳答案

异常应该用于异常条件。您意想不到的事情会发生。

您不应该将它们用于条件逻辑。

乔什·布洛赫(Josh Bloch)在他的书中具体概述了这一点,这本书非常好,恕我直言,这是一本必备书:

http://java.sun.com/docs/books/effective/

关于java - 我应该故意捕获检查异常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6144979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com