2016-07-04 11 views
1

私は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()(上記の最初のキャッチブロック)を呼び出すカスタム例外があります。しかし、try/catchブロックは何を問わず常にFileNotFound wrong例外(上記の2番目のcatchブロック)をスローします。私の質問は、どのように特定の原因をキャッチし、最初にそれをスローして2番目のブロックが行うのですか?あなたはどこからでもカスタム例外をスローしません

import java.lang.Throwable; 

public class DashException extends FileNotFoundException{ 
    public DashException(Throwable cause){ 
    super("-") 
    } 
} 
+1

DashExceptionはFileNotFoundExceptionです...なぜFileNotFoundExceptionをスローしないのですか? –

答えて

9

:定義されたそれは、独自のファイルとして

マイDashException。 ブロックのコードでthrowにする必要があります。例えば:

if (args[i].equals("-")) { 
    throw new DashException(); 
} 

そして、この例外には根本的な原因がないので、あなたが、constuctorからthを削除することができます。

+0

filePrint()は、FileNotFoundException、IOException、および私のカスタムDashExceptionをスローします。それはあなたが意味することですか? –

+0

'DashException'が' FileNotFoundException'であるため、署名に追加する必要はありません。 – meskobalazs

+0

そして、@meskobalazsのように例外をスロー宣言に追加しても、例外をスローしなかった場合は、特別な例外はありません。 –

関連する問題