2016-03-30 3 views
0

Ich bin sehr neu in der Ausnahmebehandlung, und während ich dieses Programm für die Schule schrieb, hatte ich einige merkwürdige Fehler.Was ist javax.xml.bind?

In meinem Programm hatte ich eine Klasse für "ValidationException", die "Exception" und 3 andere Klassen erweitert.

In einer der Klassen werfen mehrere der Methoden auf die "ValidationException" -Klasse, und in der anderen Klasse habe ich mehrere versuchen und fangen Blöcke, wo sie eine "ValidationException" fangen.

Wie auch immer, in den Catch-Anweisungen würde es mir nicht erlauben, "catch (ValidationException e)" zu setzen, es zwang mich, "catch (javax.xml.bind.ValidationException e)" zu setzen.

Danach hat es gut funktioniert. Genau das passierte mit meinen J-Unit-Testfällen.

Wie auch immer, ich frage mich nur, ob ich irgendwas vermasselt habe! Wenn jemand eine Idee haben könnte, was das verursacht hat oder was diese javax.xml.bind ist, wäre das großartig!

+3

Welcher Code für das Auslösen der Ausnahme verantwortlich war, war 'javax.xml.bind.ValidationException' und nicht Ihre benutzerdefinierte' ValidationException'. Wahrscheinlich haben Sie beim Import etwas falsch gemacht. – dambros

+0

Sie haben gerade meine größte Sorge bestätigt! Ich habe keine Ahnung, wie ich das beheben kann. – mustardtiger10

+1

"Ich habe keine Ahnung, wie ich das beheben kann" - 99% deines Lebens als Programmierer genau dort. Sie werden wissen, wie Sie es beheben können, sobald Sie erfahren, was es verursacht. Gerade jetzt fühlst du dich überwältigt, weil du in allem neu bist und es scheint so viel zu sein, aber du wirst es in den Griff bekommen. – jpmc26

Antwort

2

Problem war Kollision von Klassennamen. In Ihrem Code war die benutzerdefinierte ValidationException standardmäßig im Bereich und maskierte daher die ValidationException-Klasse im Paket javax.xml.bind. Da die ausgelöste Ausnahme eine andere ValidationException-Klasse als im Bereich ist, mussten Sie lediglich das richtige Paket ermitteln. Hätten Sie Ihre Klasse MyValidationException benannt, hätten Sie das Paket-Präfix nicht innerhalb des Catchs angeben müssen.

Denken Sie an "Paket" als "Pfad" zu der bestimmten Klasse oder Gruppe von Klassen ähnlich.