"Zentrales" Error-Handling

Hallo in die Runde.

wenn man etwas umfangreichere Scripte schreibt, gibt’s ja ne ganze MEnge, was zur Laufzeit so schief gehen kann: Variablen nicht mehr da, Limit überschritten, Event kann nicht angelegt/upgedatet werden, nach Löschen & Neuanlegen ist die Objektnummer eines Zielobjekts anders uvm.

Man kann sich sagen „egal, gibt ja ne Fehlermeldung“. Nur nach ein paar Wochen oder Monaten später kann es gut sein, dass einem die nicht mehr so richtig viel sagen …

Baut man eine dezidierte Fehlebehandlung ein, so schreibt man oft X Zeile code, der im Normalfalle nie benutzt wird, weil ja 99% alles läuft.

M.E. wäre daher eine „IPS-zentrale“ Fehlerbehandlung recht sinnvoll. Nun mag sein, dass PHP da einiges anbietet, kenne PHP noch nicht sooo in allen Winkeln, aber da man in der Error-Routine auch Daten von IPS bezüglich der Laufzeitumgebung braucht, kann ich mir denken, dass da etwas IPS-eigenes sinnvoll wäre.

Hat jemand dazu ne Idee/sowa schon gebaut oder wäre es evtl. sinnvoll, in IPS ein eigenes „zentrales“ Errorhandling einzubauen, in welches man dann den „Worst-Case-Code“ hin auslagern kann?

Ich denke da an ein „zentrales/spezielles“ Script (könnte auch 'n eigenes Modul mit Scripten als Childobjekte sein), das mit dem aktuellen Fehlerwert plus Script plus Codezeile aufgerufen wird und das man dann selbst verändern kann.

Evtl. könnte das auch eine Funktion sein, in die andere Funktionen „rein“ können und die im NICHT-Fehlerfalle das Ergebnis der „inneren Funktion“ einfach nach aussen weiter gibt, im Fehlerfalle aber ein paar „individuelle“ Parameter an die Fehlerroutine reicht.

z.B:

statt



$object = IPS_GetObject( $id) ;


Könnte man schreiben



$object = IPS_ERROR(   IPS_GetObject( $id) , $PrmArray ) ;


Im Fehlerfalle steht dann in der zentralen Routine das Array $PrmArray zur Verfügung, in das man am Beginn des Scripts alles mögliche zur Fehlerbehandlung einbringen könnte.

Speziell, wenn man Funktionen und Scripte anderen Benutzern zur Verfügungstellen will (ich denke mal an die Zukunft und einen „Drittmarkt“) wäre sowas sicher hilfreich.

Wie ist Eure Meinung?
jwka

Habs mal ins richtige Forum verschoben.

Hallo Thomas und jwka,

eine ähnliche Intention hatte ich auch hier schon mal:
http://www.ip-symcon.de/forum/f52/zentraler-fehlerspeicher-versand-11511/

Leider bis jetzt ohne Antwort…:mad:

Joachim

Ansätze zum Handling gab es schon:

Hallo Thomas,

ich habe gestern abend noch mal „auf die Schnelle“ Deine Anleitung nachzuvollziehen.

Die Codezeilen in der PHP.ini hatten bei mir die Wirkung, dass der IPS-Server zwar gestartet wurde, aber kein Zugriff mehr per Webfront möglich war und der Server nur noch per „Neustart“ zu Beenden war.

Daher habe ich das erst einmal wieder entfernt…

Haben andere ähnliche Erfahrungen? Habe ich möglicherweise etwas nicht richtig gemacht?:confused:

Joachim

Darf nicht sein.
Meine php.ini zum Vergleich:

extension_dir =C:\IP-Symcon_Ver2\ext
max_execution_time = 150
register_globals=on
error_reporting=E_ALL
log_errors = On
error_log = C:\IP-Symcon_Ver2\automatic\error.log
extension = ixed.5.3ts.dll
extension = php_curl.dll
extension = php_gd2.dll
extension = php_gettext.dll
extension = php_http_ips.dll
extension = php_mbstring.dll
extension = php_mysql.dll
extension = php_soap.dll

[Session]
session.save_handler = "files"
session.save_path = "C:\IP-Symcon_Ver2\session"
session.auto_start = 0
session.use_trans_sid = 1
session.name = "pt"
[DATE]
date.timezone="Europe/Berlin"

Hallo Thomas,

meine sieht derzeit so aus:


```php

extension_dir =D:\IP-Symcon\Installation\ext

mssql.secure_connection=on
max_execution_time=30
register_globals=on
error_reporting=E_ALL
extension = msql.dll
extension = php_curl.dll
extension = php_gd2.dll
extension = php_gettext.dll
extension = php_http.dll
extension = php_mbstring.dll
extension = php_mssql.dll
extension = php_soap.dll
[DATE]
date.timezone="Europe/Berlin"

Nach dem Einfügen würde sie dann so aussehen:


```php

extension_dir =D:\IP-Symcon\Installation\ext

mssql.secure_connection=on
max_execution_time=30
register_globals=on
error_reporting=E_ALL
log_errors = On
error_log = C:\IP-Symcon\Installation\error.log
extension = msql.dll
extension = php_curl.dll
extension = php_gd2.dll
extension = php_gettext.dll
extension = php_http.dll
extension = php_mbstring.dll
extension = php_mssql.dll
extension = php_soap.dll
[DATE]
date.timezone="Europe/Berlin"

Wäre das so korrekt?

Joachim

Sollte so gehen, bin mir jetzt nur nicht mit der Pfadangabe sicher.


error_log = C:/IP-SymconInstallation/error.log

Hallo Thomas,

irgendwie wurden die „“ entfernt, so sieht es aus:


```php

extension_dir =D:\IP-Symcon\Installation\ext

mssql.secure_connection=on
max_execution_time=30
register_globals=on
error_reporting=E_ALL
log_errors = On
error_log = D:\IP-Symcon\Installation\error.log
extension = msql.dll
extension = php_curl.dll
extension = php_gd2.dll
extension = php_gettext.dll
extension = php_http.dll
extension = php_mbstring.dll
extension = php_mssql.dll
extension = php_soap.dll
[DATE]
date.timezone="Europe/Berlin"

…aber so komme ich nicht mehr auf das Webfront, und IPS-Server beenden nur durch Neustart…:frowning:

Joachim

Sorry, keine Idee…