Hi, I'm looking for a strategy to do informative error handling at all levels of my code, yet keep these errors non-fatal as often as possible. Adhering to a proper code-standard with regards to error handling would speed up development of any code (it would shorten the bug-hunt time a lot), but it becomes especially usefull for code that processes items in large diverse datasets; exceptions should be logged (in different ways) but should not kill off the processing of other items. I have some experience with set_error_handler() and trigger_error(), but haven't perfected my use of them yet. Take for instance the following function; function chase ($arr, $indexes) { $r = $arr; foreach ($indexes as $idx) { if (is_array($r)) { $r = $r[$idx]; } else { trigger_error (htmlDumpReturn ( array ( 'arr' => $arr, 'indexes' => $indexes ), 'chase() could not walk the full tree.' ), E_USER_WARNING); return false; } } return $r; } This is a low-level function used by me to traverse to a value several arbitrary levels into an array. As you can see, things will be fine for any value that is not (boolean)false, but if i'm ever to fetch a "false" value, things will break. The solution i can think of is to have all my functions return not their results directly, but 1 of these arrays instead: //good result: return array ( 'result' => $valueFound ); //no result / bad result: return array ( 'error' => 'same error details as passed to trigger_error()' ); While this would allow the calling code to fudge, redirect or omit the failed-item, i have a small fear that this approach leads to "complicated" code whenever a function is called, but I suppose that with a few extra short-named functions ( like is_error() ) the calling code can be kept short and simple too. (local) log-levels and (also local) redirection-of-error-messages i can solve with global variables and some functions to manipulate those. My question to you all is; do you know a simpler way of achieving what i'm aiming for? -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php