我们可以在try块中有两个语句吗?

时间:2016-12-23 16:08:34

标签: java

我是编程新手,目前正在进行产品管理。所以我正在学习绳索。我试过这句话:

public class Tuna { 
    Formatter f;
    public void createfile(){
    try{            
        f = new Formatter("help.text"); 
        f.format("%s%s", "firstname ","lastname");
    }

    catch (Exception e){
        System.out.println("You got an error ");
    }
}

现在执行第一个语句并创建一个文件,但是第二个语句不会通过在文件中创建条目来执行。

同时,我创建了一个名为createrecord()的方法,并插入了f.format(..);语句。

谁能告诉我这一切是如何运作的?

3 个答案:

答案 0 :(得分:0)

首先,你永远不应该捕获异常。相反,尽可能在watch异常类型中捕获。在这种情况下,它将是FileNotFoundException。

其次,您必须关闭格式化程序才能实际释放文件并进行编辑。

适用于我的示例:

//Keep it simple, stupid

$allcodeline = explode(PHP_EOL, $content);

foreach ( $allcodeline as $line => $val ) :
    if ( preg_match("#SOMEREGEX#i",$val,$res) ) {
        echo $res[0] . '!' . $line . "\n";
    }
endforeach;

由于Formatter是AutoClosable,您还可以尝试使用资源:

public class SO41304560 {
    public static void main(String[] args) throws Exception {
        try {
            Formatter formatter = new Formatter("c:/Temp/test.txt");
            formatter.format("%s%s", "firstname ","lastname");
            formatter.close();
        } catch (FileNotFoundException e) {
            throw new Exception(e);
        }
    }
}

答案 1 :(得分:-1)

是的,你可以在一个试块中加入尽可能多的心脏代码(但有关于你应该多少和应该做什么的话)。

第一项业务,这应该是您检查的第一件事。你的文件名是对的吗?它的前缀是.text还是.txt

一旦完成,也不要忘记刷新格式化程序。当你完成它时,请致电f.flush();

答案 2 :(得分:-1)

是的,放入try块的代码数量没有限制,这取决于你需要根据异常控制代码执行的程度。