Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino

Unhandled exception type NotesException

(1/2) > >>

dirk_2909:
Hallo,

Die o.g. Meldung geibt mir eclipse, wenn ich folgende Zeile versuche zu speichern:


--- Code: ---Session s = NotesFactory.createSession(host, "" , "" ); 
--- Ende Code ---

Notes.jar ist im Project eingebunden?!

Wer weiß Rat?

animate:
das heißt, dass die Methode createSession() eine NotesException wirft wenn was schief geht. In diesem Fall musst Du entscheiden, was passieren soll. In Deinem Fall behandelst Du die Exception mit Hilfe eines try...catch Blocks.


--- Code: ---try {
    Session session = NotesFactory.createSession(host, "" , "" );
    String userName = session.getUserName();
} catch (NotesException e) {
    //Fehlerbehandlung
    logger.error(e);
}

--- Ende Code ---

flaite:
NotesException ist eine sogenannte "checkedException". Daneben gibts noch "unchecked exceptions". Nicht wenige Leute denken, dass in Java mit den checked Exceptions ein bischen übertrieben wurde. Gibt dazu endlose Diskussionen.
Methoden, die eine checkedException auslösen (z.B. NotesFactory.createSession()) müssen in der aufrufenden Methode (die von dir) try-cached werden. Die Programmierer der Lotus-Java-Api hätten auch eine uncheckedException nehmen können. Mit checkedException soll das eine Art Hinweis für den Anwendungsprogrammierer sein, dass hier etwas explizit abgefangen werden sollte. Die Programmierer des Springframeworks haben z.B. in ihrem JDBC-Subsystem unchecked exceptions gewählt. In .NET sind alle exceptions unchecked.
Hier ist eine kurze Erklärung:
http://www.javapractices.com/Topic129.cjp
In Eclipse musst du ja nur links auf die Glühbirne klicken und du bekommst einen Lösungsvorschlag.

Nicht nervös machen lassen, aber die exceptions zumindest erstmal loggen wie von Thomas gezeigt oder zumindest mit e.printStackTrace(), wenn du noch nicht weisst wie loggen geht.

Gruß Axel

dirk_2909:
Hallo Ihr beiden  :D

Danke für die Hilfe  :D

Das mit der "Glühbirne" in eclipse ist ja echt super. Da muss man erst draufkommen (wenn man neben dem Projektgeschäft noch "nebenbei" was mit Java macht).

Werde mir die nächtsen Tage meine Java-Lektüre genauer reinziehen ( "Java lernen mit Eclipse3" und "Einstieg in Eclipse 3".

Werde mich wieder melden, wenn es Probleme gibt.

flaite:
Am wichtigsten ist, dass du dir nicht sowas angewöhnst:

--- Code: ---try {
    Session session = NotesFactory.createSession(host, "" , "" );
    String userName = session.getUserName();
} catch (NotesException e) {
  // leere CATCH. NEVER EVER.
}

--- Ende Code ---
Oder noch schlimmer, um  einen großen Codeblog sowas wie: 

--- Code: ---try {
    // lots of stuff called by lots of other stuff.
} catch (Throwable t) {
  // leere CATCH. NEVER EVER
}

--- Ende Code ---
Damit wird nämlich der Fehler verborgen. Noch übler als gedankenloses Resume Next in LotusScript.
Zumindest in einen logger oder zumindest mit printStackTrace ausgeben.
Den letzteren Fall haben wir mal nach stundenlanger Suche in dem Code einer gefeierten openSource JSF Komponente gefunden.   >:(

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln