2016-04-07 29 views
0
import java.io.File; 
import java.io.FileReader; 

public class FilenotFound_Demo { 

    public static void main(String args[]){  
     File file=new File("E://file.txt"); 
     FileReader fr = new FileReader(file); 
    } 

} 

は、私は次のコードを持っていると私は、そのクラスを使用するたびに、それが必要であること、エラーの同じタイプを示すことがクラスでこの機能を実装することができますどのように私はそれをコンパイルした場合、その後特定の例外をスローまたはキャッチする必要があるクラスを作成する方法。

C:\>javac FilenotFound_Demo.java 
FilenotFound_Demo.java:8: error: unreported exception FileNotFoundException; must be caught or declared to be thrown 
     FileReader fr = new FileReader(file); 
        ^
1 error 

と仮定します特定の例外をキャッチまたはスローする

+2

ちょうどメソッド/コンストラクタは、与えられたチェック例外をスローすることを宣言... –

答えて

0

コンパイルエラーです。したがって、あなたのクラスがそのように振る舞うようにするには、メソッドthrowsをチェックしてメソッドを呼び出すクラスを作成してください。

たとえば、new FileReader(file);のコンストラクタthrows FileNotFoundExceptionは、この例外を処理せずにコンパイルしないという理由があります。

public FileReader(File file) throws FileNotFoundException { 
    super(new FileInputStream(file)); 
} 

だから、あなたはそのpublic void expMethod() throws Exception{}ようなあなたの方法の何かを作るとExceptionを表示するために必要なクラスでそれを呼び出すことができます。

1

メソッドに「スロー」を追加する必要があります。

public class TestClass { 
    public TestClass() throws Exception{ 
     throw new Exception("Errormessage"); 
    } 
} 

この例外はチェックする必要があります。つまり、RuntimeExceptionから継承してはいけません。そうすることで、クラスを使用する人は例外を処理する必要があります。これは、コンストラクタだけでなく、通常のメソッドでも使用できます。

0

これを試してみてください -

public class Overflow extends Exception{ 

public Overflow(String s) { 
    System.out.println(s); 

} 
public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    System.out.println("s"); 
    File file=new File("E://file.txt"); 
    try{ 
    FileReader fr = new FileReader(file); 
    }catch(Exception e){ 
     new Overflow("File not found " +e); 
    } 
} 

出力 -

s 
File not found java.io.FileNotFoundException: E:\file.txt (The system cannot find the file specified) 
関連する問題