Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Exception, Auslöser unbekannt


HenryHux - Mo 24.01.11 14:43
Titel: Exception, Auslöser unbekannt
Hi,

ich bekomme bei folgender Funktion im Betrieb ca alle 30 Minuten eine Exception.
Wenn ich die Funktion aber Testweise 10k mal durchlaufen lasse, klappt alles korrekt.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure WriteToDatabase(x : integer);
var i : integer;
begin
  try
    case x of
    1 : begin
          with Datenbank.ADOTable1 do
          begin
            Append;
            // Datenbank mit FieldbyName beschriften
            Post;
          end;
        end;
    // Weitere Cases, mit prinzipiell gleichem Inhalt
    end;
    for i := low(HHAction) to high(HHAction) do HHAction[i] := ''//String Array, welches benutz wird, "leeren"
  except
    showmessage('Exception bei Database');
  end;
end;


Die DB wird nur von diesem Programm benutzt, also keine doppelten Schreibzugriffe.
Leider kommt die Exception eher selten, daher habe ich keine genaueren Infos, ich werde aber noch welche nachtragen.
Wenn jemand eine Idee hat, wieso die Exception ausgelöst wird, dann nur her damit :D

Lg


Nersgatt - Mo 24.01.11 14:46

Als allererstes solltest Du Deinen Exceptionhandler so gestalten, dass er eine aussagekräftige Meldung gibt. Sonst kann man nur raten.


Tilman - Mo 24.01.11 14:50

Und das geht z.B. so:

Delphi-Quelltext
1:
2:
3:
4:
5:
try
[..]
except
  on E: Exception do ShowMessage(E.Message);
end;


HenryHux - Mo 24.01.11 14:52

Ja, danke.
Der Delphi Debugger zeigt es mir ja trotzdem an, war so ja nur testweise.
Die Fehlermeldung ist folgende:

Erste Gelegenheit für Exception bei $756BB727. Exception-Klasse EOleException mit Meldung 'Fehler bei einem aus mehreren Schritten bestehenden Vorgang. Prüfen Sie die einzelnen Statuswerte'. Prozess Project1.exe (4024)

Lg


bummi - Mo 24.01.11 14:54

Fehlender Primärschlüssel ? Trigger in der Datenbank, Defaultwerte ?


HenryHux - Mo 24.01.11 14:57

DB hat Indizies und Standardwerte.
Ka was Trigger sind, deswegen werden wohl auch keine drin sein :D
Trotzdem fügt die Funktion in Tests fehlerlos 10k Einträge ein.