public void writeToFile(String filename, String line) throws IOException { PrintWriter ud = new PrintWriter(new FileWriter(filename)); ud.println(""); ud.close(); } } -------------------------------------
Hvis jeg compiler, får jeg fejlkode: Control.java:9: unreported exception java.io.IOException; must be caught or declared to be thrown is.writeToFile("c:\\fors.txt","Hejsa!");
Hvis jeg indsætter "try...catch" compiler den ok, men skriver ikke noget i tekstfilen.
Som arne_V siger, du skal altid fange exceptions i java.
import java.io.*;
public class Control { public static void main(String[] args) { InformationStream is = new InformationStream(); try{ is.writeToFile("c:\\fors.txt","Hejsa!"); } catch ( IOException e ) {} } }
class InformationStream { public void writeToFile(String filename, String line) throws IOException { PrintWriter ud = new PrintWriter(new FileWriter(filename)); ud.println(""); ud.close(); } }
Fantastisk. Det virker! Nu forstår jeg også hvad der ligger i ordet throws - det er bare noget mærkeligt noget, at compileren tager højde for en fejl, der KAN hænde... men ok, jeg klager ikke.
Hvad så hvis jeg vil have min writeToFile til at append´e?
Det er en feature i Java at man erklærer metoder til at de kan smide en exception således at den programmør der bruger metoden bliver tvunget til at tage stilling til fejl situationer. Vil man catche eller sende videre ?
Du husker rigtigt. Exceptions som extender RuntimeException skal ikke håndteres men kan håndteres (og de kaldes så unchecked exceptions).
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.