Попробуйте / поймать, или делать обработку исключений, не меняя заголовок метода - PullRequest
0 голосов
/ 06 декабря 2011

Я пишу простую программу, она пишет «Я люблю Java» 300 раз в текстовый файл, и у меня она работает, как показано.

public class PrintLines {
    public static void main(String[] args) throws Exception{    
         java.io.File file = new java.io.File("myFile.txt");
         java.io.PrintWriter output = new java.io.PrintWriter(file);        
         int count = 1;
         while (count <= 300) {
             output.println(count + " I love Java!");
             count++;           
         }
         output.close();
    }
}

В чем я не уверен, и пытался выяснить на нескольких веб-страницах и в учебнике, который я использую для класса, как мне сделать блок try / catch для этого кода и все же создать файл? Это работает, как я уже сказал, но я должен сделать это без , которое создает исключение . Не могу найти приличную веб-страницу, которая дает ответы новичкам для начинающих программистов, таких как я.

Ответы [ 5 ]

3 голосов
/ 06 декабря 2011

Ваш код должен выглядеть примерно так.Я думаю, EXCEPTION должно быть IOException.

public class PrintLines {
    public static void main(String[] args) {
        java.io.File file;
        java.io.PrintWriter output = null;
        try{
            file = new java.io.File("myFile.txt");
            output = new java.io.PrintWriter(file);
            int count = 1;
            while (count <= 300) {
                output.println(count + " I love Java!");
                count++;

           }
           output.close();
       } catch(*EXCEPTION*) {
       //Handle Exception
       } finally {
          if(output!=null) {
           output.close();
          }
       }
    }
}
1 голос
/ 06 декабря 2011

Java Tutorials предназначены для людей, плохо знакомых с Java, и объясняют эти вещи довольно хорошо. В частности, след основных классов подробно описывает исключения и ввод / вывод. И да, примеры кода для ввода / вывода также демонстрируют правильную обработку исключений.

0 голосов
/ 06 декабря 2011

Поскольку комментарий слишком короткий:

public class PrintLines {
    public static void main(String[] args) {    
        java.io.File file = new java.io.File("myFile.txt");
        try {
            final java.io.PrintWriter output = new java.io.PrintWriter(file);
            try {
                int count = 1;
                while (count <= 300) {
                    output.println(count + " I love Java!");
                    count++;           
                }
            } finally {
                output.close();
            }
            if (output.checkError()) {
                System.err.println("Failed to write file correctly.");
                System.exit(1);
                return;
            }
        } catch (java.io.FileNotFoundException exc) {
            System.err.println("Failed to write file correctly.");
            System.exit(1);
            return;
        }
    }
}

Это не хороший код.Мы продолжаем работать, даже если есть проблема с выводом, и мы неявно выбираем любую кодировку символов, которая будет установлена ​​по умолчанию в то время.

// imports elided

public class PrintLines {
    public static void main(String[] args) {    
        File file = new File("myFile.txt");
        try (OutputStream rawOut = new FileOutputStream{file);
            BuffereWriter out = new BufferedWriter(new OutputStreamWriter(
                rawOut, java.nio.charset.StandardCharsets.UTF_8
            ));
            int count = 1;
            while (count <= 300) {
                out.write(count + " I love Java!");
                out.newLine();
                count++;           
            }
            out.flush();
        } catch (java.io.IOException exc) {
            System.err.println("Failed to write file correctly.");
            System.exit(1);
            return;
        }
    }
}o

У меня естьиспользовал Java SE 7 новый оператор try.Обратите внимание, что исключение, генерируемое выделением и выпуском ресурса, перехвачено в блоке catch и является поведением противоположным , чем в Java SE 6 try-catch-finally.

0 голосов
/ 06 декабря 2011

В Java исключения обрабатываются с помощью блоков try и catch. Если вы заявляете, что ваш метод выдает Exception, вы обрабатываете исключение на более высоком уровне. Если вы хотите справиться с этим, вы должны написать свой код в блоке try и catch. Вы также можете поймать несколько типов исключений.

public class PrintLines {
    public static void main(String[] args) {
        java.io.File file;
        java.io.PrintWriter output;
        try {
           file = new java.io.File("myFile.txt");
           output = new java.io.PrintWriter(file);
           int count = 1;
           while (count <= 300) {
               output.println(count + " I love Java!");
               count++;
           }
       } catch(FileNotFoundException e) {// If the file does not exist
             e.printStackTrace();// Prints the error
       } catch(IOException e) {//any other io error
             e.printStackTrace();// Prints the error
       } finally {
            if(output!=null){
               output.close();
            }
       }
   }
}
0 голосов
/ 06 декабря 2011

Это будет выглядеть примерно так -

public class PrintLines {
    public static void main(String[] args){
        java.io.File file = new java.io.File("myFile.txt");
        java.io.PrintWriter output = null;
        try {
            output = new java.io.PrintWriter(file);
        } catch (FileNotFoundException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
        }
        int count = 1;
        while (count <= 300) {
            output.println(count + " I love Java!");
            count++;
        }
        output.close();
    }
}
...