Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Man hat einen Haufen Konstanten, die im Konstruktor initialisiert werden sollen. Leider kann die Initialisierungsfunktion für jede Variable beim Aufruf eine Exception werfen. Ist man jetzt wirklich gezwungen für jede (!!!) dieser Variablen einen eigenen Try-Catch-Block einzubauen, oder läßt sich das nicht irgendwie mit einem großen Block lösen? Mein bisheriges Problem dabei ist, daß ich die Variablen nicht einfach nur im Try-Block initialiseren kann, da der Compiler dann richtigerweise meckert, daß die Variablen nicht unbedingt initialisiert sind (wenn beim Initialisieren der x-ten Variable die Exception geworfen wird, sind alle nachfolgenden Variablen nicht initialisiert). Im Catchblock wiederum hat man nun das Problem, daß ein Teil der Variablen bereits initialisert sein kann und eine erneute Initialisiserung bei Konstanten nicht möglich ist.
Auch vorher einen Defaultwert zu setzen ist nicht möglich, da es sich um konstanten handelt.
Wie kriegt man das elegant gelöst OHNE für jede Variable einen eigenen Block herzunehmen?
public class MeineKlasse {
A a = null;
B b = null;
C c = null;
D d = null;
public MeineKlasse() {
try {
a = new A();
b = new B();
c = new C();
d = new D();
}
catch (AException e) {
// mach was
}
catch (AnotherException e) {
// mach was anderes
}
}
}
> Auch vorher einen Defaultwert zu setzen ist nicht möglich, da es sich um konstanten handelt.
sind die final oder wie?
definiere dir x lokale Variablen des passenden Typs, setzte diese auf Default,
dann kannst du sie überschreiben und hast am Ende nur eine Zuweisung (lokale Variablen in Konstanten schreiben)
wenn du aber trotz Exceptions jede Konstante einzeln berechnen willst, kommst du um einzelne try/ catch nicht drumherum,
bei einheitlichen Aufbau kannst du dir evtl eine Hilfsoperation schreiben und so Platz sparen:
int x = parseString(stringX);
int y = parseString(stringY);
usw.
und das try/catch NumberException in der Operation versteckt