ExceptionHandling mit Optional<>

lougoldi

lougoldi

Mitglied
Hallo zusammen :)

Ich versuche einen try-catch-Block durch Optionals zu ersetzten, komme aber leider nicht weiter....
Auf dem Bild ist der funktionierende Code mit try-catch-Block zu sehen, wenn ich den durch Optionals ersetzte, bekomme ich immer eine Nullpointer-Exception. Kennt jemand eventuell einen Link, wo ich eine Erklärung zum Umschreiben in einen Optional-Block finde? Sowas kommt doch sicher öfters vor...

Danke und liebe Grüße
Anhang anzeigen 15397
 
lougoldi

lougoldi

Mitglied
Weil ich das laut Aufgabenstellung versuchen soll 🤔 find aber eben keine wirkliche Erklärung oder Beispiele im Internet
 
kneitzel

kneitzel

Top Contributor
Also meine 2Cent dazu:

a) Code bitte in Code-Tags (</> Knopf) einfügen!

b) Man rennt nicht so Blindlings in eine RuntimeException rein! Statt dessen wäre etwas in der Art sinnvoller:
Java:
if (b == 0) throw new ......
return a/b;

c) Optionals ersetzen nicht die Exception. Das Verhalten ist dann anders, wenn man da etwas ersetzt. Es wird dann gesagt: Statt einer Exception wird einfach kein Ergebnis zurück geliefert. Also vom Code her prinzipiell 1:1 wie oben angedeutet:
Java:
if (b == 0) return Optional.empty();
return Optional.of(a/b);

Optionals dienen aus meiner Sicht eher dafür, null Werte zu vermeiden. Wenn etwas keine Referenz beinhalten könnte, dann nutzt man nicht null, sondern Optional<T>.
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Optionals dienen aus meiner Sicht eher dafür, null Werte zu vermeiden. Wenn etwas keine Referenz beinhalten könnte, dann nutzt man nicht null, sondern Optional<T>.
Anstatt nur Vermeidung von null würd ich den Sinn schon ganz explizit im Anzeigen von "kein Wert" sehen, was man ohne Optional in manchen Fällen mit null gelöst hätte. OptionalInt gibts ja zB nicht grundlos :)
 

Ähnliche Java Themen


Oben