访问super中的字段以报告错误

时间:2015-09-27 14:58:55

标签: java

我对java术语不太了解,所以通过示例更容易理解: 我从

实例化一个mymethods类

主要课程:

public class Main()
{
    public boolean hasErrors = false;
    MyMethods m = new MyMethods(); //cannot use try/catch
    public static void main(String[] args){
        m.writeToFile("text");
    }
}

在上面的类中,我不能(我试过)使用try catch来捕获手动抛出的FileNotFoundException,但显然这些方法不能在该位置使用(在try / catch中包装MyMethods m...)。我找不到我的必要文件时试图抛出该错误

MyMethods:

public class MyMethods()
{
    public MyMethods(){
        if(!new File("file.txt").canWrite()){
            changeSuper(true);
            throw new FileNotFoundException();
        }
    }
    public void changeSuper(boolean b) //does not work
    {
        super.hasErrors = b;
    }
    //input more methods etc here
}
  1. 为什么不能使用try / catch?
  2. 如何向主方法报告filenotfound?
  3. 请注意,这是来自netbeans中的GUI应用程序,但不是此处的重点。如果try / catch包装该行

    ,程序将无法编译

    (注意管理员/ mods:这个问题需要屠宰,但我不能更好地表达我的问题)

1 个答案:

答案 0 :(得分:0)

您只需要在方法中添加throws关键字,即:

public static void myMethod() throws FileNotFoundException{
    // Code goes here ...
    if( fileNotFound )
        throw new FileNotFoundException("File not found.");
}

然后您可以通过使用try / catch块调用方法来捕获异常:

try {
    // Do stuff...
    myMethod();
} catch (FileNotFoundException ex){
    // Handle error, if thrown...
}