佩服Rex鍥而不捨的測試,Notes在Java的運作真的有夠OOXX,Session、Database和Form這祖孫三代物件,完全不像一脈相承的物件。就列舉這三代物件每一代若設錯會如何?
- 建立Session要Server URL和登入者帳密,若Server URL是不正確或找不到的,丟出的Exception如下,是最正常的反應了。
NotesException: Could not get IOR from Domino Server: java.net.UnknownHostException: NOTESHOST
at lotus.domino.NotesFactory.requestIORPlain(Unknown Source)
at lotus.domino.NotesFactory.requestIORUsingArgs(Unknown Source)
at lotus.domino.NotesFactory.getIOR(Unknown Source)
at lotus.domino.NotesFactory.createSessionUP(Unknown Source)
at lotus.domino.NotesFactory.createSession(Unknown Source) - 取得Database要Server URL和Database Name,要是Database不存在,Database db = session.getDatabase應該會return null,但有時不會,一定要對db物件做method存取,如:db.getLastModified(),才會丟出如下Exception,才能確保在程式裡確認DB真的不存在。
NotesException: Database TESTDB.NSF has not been opened yet
at lotus.domino.NotesExceptionHelper.read(Unknown Source)
at lotus.domino.NotesExceptionHolder._read(Unknown Source)
at lotus.priv.CORBA.iiop.RepImpl.invoke(Unknown Source)
at lotus.priv.CORBA.portable.ObjectImpl._invoke(Unknown Source)
at lotus.domino.corba._IDatabaseStub.getLastModified(Unknown Source)
at lotus.domino.cso.Database.getLastModified(Unknown Source) - 以前解釋過Form只是一筆record裡的欄位,同樣Form值群聚成一個Form。所以Form沒有存不存在的問題,沒有這個Form值就會新增這個Form值,不會丟出Exception。