Gibt es eine Möglichkeit, programmatically unterscheiden, zwischen was eine IOException verursacht, zum Beispiel wird Java eine IOException werfen, wenn es einen Fehler beim Schreiben. Wie kann ich sagen, wenn seine etwas wie Zugriffsverletzung, wenn die Festplatte ist aus freiem Speicherplatz, wenn jemand das Netzlaufwerk getrennt oder andere Dinge getrennt. Ich kann nicht wirklich analysieren die Nachricht, da scheint es nicht, ein standardisiertes Nachrichtenformat zu sein, Sun (oder Orakel jetzt glaube ich) scheint nicht jede Art von standardisierten Format haben. Irgendwelche Vorschläge (Ich bin ziemlich neu in Java, seine nicht meine normale Sprache, aber ich muss es verwenden, um ein sehr gebrochenes System bei der Arbeit zu beheben.) Gespeichert Sie eine von einer Handvoll möglicher Unterklassen von IOException, und diese sind ziemlich standardisiert. Sie können entweder Klassen mit instanceof oder (a brutish approach) vergleichen, die von getClass () zurückgegeben werden. GetName (). Es gibt einige Workarounds für die anderen Sachen, die du mit einem File. canWrite () auf einer Datei machen kannst, die du für das Schreiben öffnen möchtest (gut, dein Programm sollte das trotzdem getan haben, wenn der Name andor Verzeichnis variieren kann), und wenn theres ein Chance Sie lief aus Datei-Bereich, könnten Sie versuchen, schreiben eine kleine Datei, um eine bekannte gute Lage und sehen, ob das explodiert auf Sie. Nicht sehr elegant, ich weiß: Java ist nicht wirklich als System-Programmiersprache bekannt. Auf der anderen Seite, sehr oft wissen, eine detaillierte Ursache für eine Ausnahme nicht viel helfen: Mit oder ohne das Wissen, kann Ihr Benutzer einfach nicht in der Lage, das Programm zu tun, was benötigt wird. Antwort # 1 am: Mai 12, 2010, um 10:50 Uhr Eine mögliche Ergänzung zu Ihrem ersten Absatz - in der Regel you39re catch-diese Ausnahmen, so dass eine schönere Alternative ist, separate catch-Blöcke für FileNotFoundException haben. UnknownHostException. Etc. Es vermeidet quotexplicitquot Prüfung und können Sie behandeln die Sonderfälle in verschiedenen Blöcken von Anfang an (ohne einen catch-all catch (IOException e) Block am Ende ausschließen). Ndash Andrzej Doyle Ahdrzej: Sie haben sehr Recht. Ich dachte an Band-Hilfe-Korrekturen auf bereits vorhandene Codierung und Annahme, dass uberjumper nicht die vorhandenen Fanghierarchien neu ordnen (was auch immer es sein mag). Aber wenn quoten es rightquot ist eine Option, dann würde Ihr Weg es sein. Ndash Carl Smotricz Jul 29 10 um 16: 13Konstruiert eine IOException mit null als seine Fehlermeldung. IOException Konstruiert eine IOException mit der angegebenen Detailmeldung. Parameter: message - Die Detailnachricht (die für die spätere Abfrage durch die Methode Throwable. getMessage () gespeichert wird) IOException Erstellt eine IOException mit der angegebenen Detailmeldung und - ursache. Beachten Sie, dass die Detailmeldung, die mit der Ursache assoziiert ist, nicht automatisch in diese Ausnahmemeldung eingeschlossen wird. Parameter: message - Die Detailnachricht (die für die spätere Abfrage durch die Methode Throwable. getMessage () gespeichert wird) Ursache - die Ursache (die für die spätere Abfrage durch die Methode Throwable. getCause () gespeichert wird. (Ein Nullwert ist zulässig und zeigt an, dass die Ursache nicht vorhanden oder unbekannt ist.) Seit: 1.6 IOException Erstellt eine IOException mit der angegebenen Ursache und einer Detailmeldung von (causenull. null. cause. toString ()) Klasse und Detail Nachricht der Ursache). Dieser Konstruktor ist nützlich für IO-Ausnahmen, die wenig mehr als Wrapper für andere Throwables sind. Parameter: cause - Die Ursache (die für die spätere Abfrage durch die Methode Throwable. getCause () gespeichert wird. (Ein Nullwert ist zulässig und zeigt an, dass die Ursache nicht vorhanden oder unbekannt ist.) Seit: 1.6 Einen Fehler oder eine Funktion übergeben Weitere Informationen zu API-Referenz - und Entwicklerdokumentationen finden Sie unter Java SE-Dokumentation. Diese Dokumentation enthält detaillierte, entwicklerbezogene Beschreibungen mit konzeptionellen Übersichten, Definitionen von Begriffen, Workarounds und Arbeitsbeispielen. Copyright x00a9 1993, 2016, Oracle und seine Tochtergesellschaften. Alle Rechte vorbehalten. Die Verwendung unterliegt den Lizenzbestimmungen. Weitere Informationen finden Sie in der Dokumentation zur Umverteilungsrichtlinie. Scripting auf dieser Seite Tracks Traffic Traffic, aber ändert sich der Inhalt in keiner Weise.
No comments:
Post a Comment