Я пытаюсь сделать клон cat
, и я хочу, чтобы он получал ввод, когда был представлен -
.Почему моя программа не принимает специальное исключение?
Главный(); здесь:
import java.io.*;
import java.util.*;
class cat {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
try{
filePrint(args[i]);
} catch(DashException letsTryThis){
catDash();
} catch(FileNotFoundException wrong) {
System.err.println(String.format("%s: File Not Found.", args[i]));
} catch (IOException noWords) {
System.err.println(String.format("%s: File can't be read.", args[i]));
}
}
}
}
filePrint()
просто печатает файл построчно и catDash()
получает и печатает со стандартным вводом. Ничего особенного.
То, что я пытаюсь сделать, - это специальное исключение, которое специально улавливает -
и вызывает catDash()
(первый блок catch выше). Однако, несмотря ни на что, блок try/catch всегда выдает исключение FileNotFound wrong
(второй блок catch выше). Мой вопрос: как мне заставить его поймать конкретную причину и бросить ее раньше, чем второй блок?
Мои DashException
, как определено его собственный файл:
import java.lang.Throwable;
public class DashException extends FileNotFoundException{
public DashException(Throwable cause){
super("-")
}
}
DashException - это FileNotFoundException ... почему бы вам просто не выбросить FileNotFoundException ??? –