Domino 9 und frühere Versionen > ND8: Entwicklung
Kann sich eine Klasseinstanz selbst zerstören?
koehlerbv:
--- Zitat von: Tode am 25.11.14 - 15:15:06 ---... oder eben auch wieder nach oben durchreichen...
--- Ende Zitat ---
UND merken, wann das Ende der Fahnenstange erreicht ist ;D
@Kristian: Der Kern ist aber gerade das "verarbeitet hier ..." - was passiert da? Wie erfährt wer von ausserhalb, ob und was da schlimmes passiert ist?
Bernhard
khing:
Sorry, das habe ich natürlich vergessen Bernhard. Sonst funktioniert diese Klasse/Sub ganz normal - also stopt die aktuellen Ausführungen.
--- Code: ---Public Sub logError(ErrorString)
On Error GoTo errHandler
Dim i As Integer
Dim max As Integer
Dim vCurrChar As String*1
max = Len(Me.vLogToMedium)
Call Me.InitErrorFullOutput()
For i=0 To max-1
vCurrChar = Mid(Me.LogToMedium, i+1 ,1)
Select Case (vCurrChar)
Case CStr(ErrorHandler_LogTo_CentralLogDB): LogTo_CentralLogDB(ErrorString)
Case CStr(ErrorHandler_LogTo_DialogFull): logToDialogFull(ErrorString)
Case CStr(ErrorHandler_LogTo_DialogSimple): logToDialogSimple(Errorstring)
Case CStr(ErrorHandler_LogTo_StatusBar): logToStatusBar(Errorstring)
Case Else: Print "lsCl_Global:logError VLogToMedium Type noch nicht definiert"
End Select
Next
Ende:
Exit Sub
errHandler:
Me.logToDialogSimple("Library: lsCL_Global -- Sub: logError -- Returntype: -- Sub/Function: " & CrLF & vInitErrorFullOutput)
Resume Ende
End Sub
--- Ende Code ---
In LogTo_CentralLogDB(ErrorString) wird der Fehler einfach an eine Funktion weitergegeben, die die Fehler in eine zentrale Db schriebt (das passiert auch im o. g. Fall). logToDialogSimple(Errorstring)gibt zum Beispiel nur eine MessageBox aus. Wie gesagt, funtkioniert das im Normalfall aber nur nicht, wenn ich die Sub logError überschreibe....
Tode:
Du machst aber ein "Resume"... und damit ist der Error "gegessen" und die aufrufende Funktion / Sub bekommt nie mit, dass da ein Fehler passiert ist...
khing:
???
Aber doch ein "Resume Ende" und da geht es zum Exit Sub
Ich bin verwirrt, wie sollte das sonst gehen?
flaite:
Du verstößt gegen gleich einige grundlegende OO Designprinzipien.
Z.B. http://de.wikipedia.org/wiki/Komposition_an_Stelle_von_Vererbung
Die Idee eine komplexe Vererbungshierarchie zu bauen, in der jede Klasse auch irgendwie ein Errorhandler und eine nicht näher spezifizierte "Basis" liegt zwar erstmal nahe, ist aber immer eine schlechte Idee.
Versuch das erstmal ein wenig zu vereinfachen und schau dann, wo der Fehler liegt.
Ich vermute ohne jede Ironie, dass dieser Fehler sehr interessant ist, bin aber als LotusScript Programmierer nicht mehr fit genug, um zu sagen, was da passiert.
Warum garbage-collectest Du das Objekt selber (dieses delete this), wenn die LotusScript Umgebung selbst einen garbage collector bereitstellt ???
Wenn Du im Ablauf des codes auf ein garbage-collectete Dokument zugreifst, kann nur Unsinn herauskommen. Der Bezeichner der Instanz zeigt dann auf eine Referenz im Speicher, die eigentlich nicht mehr vorhanden ist.
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln