2016-11-18 2 views
1

Stellen Sie sich vor, dass ich eine Hauptklasse habe, die eine HashMap eines anderen Typs von Klasse handhabt, die ich in Dateien speichern möchte, die die Schnittstelle serializable verwenden.Sollte ich Ausnahmen in solchen Fällen verwenden?

Wir können die Hauptklasse nennen die -Manager und die Klassen I in Dateien speichern möchten, können Daten aufgerufen werden.

Nun wird die -Manager Klasse hat eine Methode eine Instanz der Daten Klasse in eine Datei (alle Instanzen Daten in einem HashMap im -Manager Klasse gespeichert sind) zu speichern. Der Name der Instanz wird als der Benutzer eingegeben, so dass sie möglicherweise nicht existiert.

Was soll ich in solchen Fällen tun? Prüfe, ob die Instanz existiert und wenn nicht, gebe ich false zurück oder mache eine Funktion, die void zurückgibt und eine Ausnahme auslöst, wenn die Instanz nicht existiert? Sollte ich Ausnahmen in solchen Fällen verwenden? Werden Ausnahmen einen großen Einfluss auf die Leistung eines Programms haben (da jedes Mal, wenn wir einen werfen, wir ein neues Objekt erstellen müssen ...)?

Danke.

+1

Machen Sie was "HashMap" tut. Geben Sie den alten Wert zurück, der dem Schlüssel zugeordnet ist, oder null, wenn es keinen gibt. Sie brauchen keine Ausnahme. – EJP

+0

@EJP In dieser Situation möchte ich keine Referenz auf irgendein Objekt zurückgeben. Da ich das Objekt im Speicher speichern möchte, gibt die Funktion true zurück, wenn das Objekt erfolgreich gespeichert wurde, oder false, wenn es nicht existierte oder wenn eine IOException aufgetreten ist. –

+1

Sie sollten wahrscheinlich nicht zu viel über die Leistung nachdenken, sondern über die Bedingungen, unter denen Ausnahmen die geeignete Lösung für Design und Implementierung darstellen. Sehen Sie sich die Standard-APIs an, verwenden sie Ausnahmen, wie Sie es beschreiben? Etc. – pvg

Antwort

1

Sie müssen eine Ausnahme in einem Fall auslösen, wenn dieser Fall weitere Programmlogik bricht.

Wenn die Instanz Existenz ist wichtig und wichtig für die zukünftigen Operationen, dann werfen Sie besser eine Ausnahme. Andernfalls könnte die Methode boolean ohne Ausnahmen zurückgeben.

Werden Ausnahmen einen großen Einfluss auf die Leistung eines Programms haben?

Nein, werden sie nicht. Wie auch immer, du solltest dir darüber keine Sorgen machen.
There are a good question and answers.

1

Exceptions werden verwendet, wenn Sie nichts tun können, wenn Sie eine Datei auf die Festplatte schreiben, aber die Festplatte voll ist.

if werden verwendet, wenn Sie etwas wie die Überprüfung des Nenners tun können, ist Null oder nicht in Division und bitten den Benutzer, eine andere Nummer einzugeben.

Exceptions sind teurer als if, denn wenn die Ausnahme ausgelöst wird, erstellt StackTrace zurück zu gehen.

Wenn Sie also etwas unternehmen können, um einen Fehler zu vermeiden, verwenden Sie if. Wenn Sie nicht können, dann verwenden Sie exception

Verwandte Themen