Code: Alles auswählen
import java.net.MalformedURLException;
import java.net.URL;
public class ExcT {
public static void main(String[] args) throws MalformedURLException {
URL url = new URL("http://www.example.com");
}
}
Code: Alles auswählen
import java.net.MalformedURLException;
import java.net.URL;
public class ExcT {
public static void main(String[] args) throws MalformedURLException {
URL url = new URL("http://www.example.com");
}
}
Auch das ist falsch.ice2k3 hat geschrieben:Mal abgesehen davon kann man die Exception in Java genau so nach oben weiter reichen (mit dem Schlüsselwort throws), das Abfangen der Exception ist nicht Pflicht!
Ich weiß nicht, wie man das in Java-Desktop-Programmen tut, weil ich das noch nie programmiert habe. In Java-Servlets jedenfalls ist es durchaus Usus, alle Ausnahmen, an denen man nicht interessiert ist, nach oben durchzureichen, weil der Applikationsserver dann einen sauberern Traceback fürs Debugging in die Log-Dateien schreibt und man nicht Gefahr läuft, mit einem inkonsistenten Zustand weiterzuarbeiten. Ich persönlich würde das auch bei Desktop-Programmen tun, da der Traceback im Falle einer ungewöhnlichen Ausnahme viel wichtiger ist als eine nichtssagende Fehlermeldung.sparrow hat geschrieben:Auch das ist falsch.ice2k3 hat geschrieben:Mal abgesehen davon kann man die Exception in Java genau so nach oben weiter reichen (mit dem Schlüsselwort throws), das Abfangen der Exception ist nicht Pflicht!
In diesem Fall muss der Aufrufer dann die Fehlerbehandlung übernehmen oder weiterreichen. Ein "Unterschlagen" wie in Python ist somit nicht möglich, spätestens in der Main-Methode wird niemand auf die Idee kommen per throws weiter zu reichen.
Was ist denn daran nicht scheinbar? Der naive Betrachter mag doch annehmen, dass keine Exception fliegen kann eben weil man nichts abfangen muss. Das Problem sind in dem Fall aber auch nicht die NullPointerExceptions sondern die Tatsache, dass das Objekt überhaupt Null sein darf. Und das 1/0 gleich eine RuntimeException wirft, sollte wirklich nicht im Sinne des Erfinders sein.sparrow hat geschrieben:Dadurch wird die Sicherheit aber nicht scheinbar, denn eine NullPointerException kann nur auftreten wenn auf Objekt verwiesen und zugegriffen wird das null ist.
Jetzt sei nicht beleidigt. Wenn du ein Verhalten „wie in Java“ möchtest musst du dich auch nicht wundern wenn man über Java spricht. Und Halbwahrheiten über Java wurden hier auch nicht verbreitet. Deine Frage wurde auch mehrfach beantwortet: Geht nicht ohne weiteres. Deine Zeit investierst du auf jeden Fall besser in das schreiben von Tests.Meine Frage war ob man das Behandeln von Exceptions in Python erzwingen kann. Diese Frage beantwortet man nicht mit Halbwahrheiten über andere Programmiersprachen.