Question: I'm looking to run a bit of custom error handling for PHP's parse errors - the type when the syntax is wrong, and you get those white screens of death.

(To be clear, the type that would result when running malformed code as so:

```
<?php
if () {
?>

```

)

I had a look at setting a custom error handler, but couldn't get anything to happen.

Answer: 
Normally you'd use [`set_error_handler`](http://us3.php.net/set-error-handler) for this, but the docs note this:

> 
> The following error types cannot be handled with a user defined function: `E_ERROR`, `E_PARSE`, `E_CORE_ERROR`, `E_CORE_WARNING`, `E_COMPILE_ERROR`, `E_COMPILE_WARNING`, and most of `E_STRICT` raised in the file where `set_error_handler()` is called. 
> 
> 
> 

What you have there is a `PARSE_ERROR` and is not catachble by this. In the "user comment" sections of the `set_error_handler` page there is a plethora of solutions to catch all errors, and some say it works and some say it doesn't, so I suggest just going through them and finding if any in fact work.
It isn't a *Fatal error* as the term is used in PHP. It is a *Parse error*. This means that PHP cannot understand your code and it thus never comes to execution of the code at all. Therefore you can't catch such errors.
If you're sure the code to test does not contain any harmful injections, you can eval it:

```
if ( !@eval( 'if () {' ) )
{

    echo "An error occured.";

}

```

But be sure to read advices on how and when to use [`eval()`](http://www.php.net/eval). It can be quite dangerous.