Я разработал обработку загруженных файлов следующим образом:
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 объявлено следующим образом:
* * 1010
Я позволил ему расширить RuntimeException, поскольку он делает код в UploadedFileChecker чистым, но при этом делает его непроверенным исключением. Таким образом, перехват в handleUploadedFile является недействительным, поскольку мы не должны перехватывать непроверенные исключения.
Мой вопрос заключается в том, должен ли я перехватить исключение BadUploadedFileException или сделать так, чтобы оно расширяло исключение, и добавить «throws BadUploadedFileException» к каждому методу UploadedFileChecker.