【发布时间】:2011-05-26 20:58:03
【问题描述】:
我设计了一个上传文件的处理方式如下:
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 中的捕获是不合适的,因为我们不应该捕获未经检查的异常。
我的问题是,我应该捕获 BadUploadedFileException 还是让它扩展 Exception 并将“throws BadUploadedFileException”附加到 UploadedFileChecker 的每个方法中。
【问题讨论】: