PHP Manejo de errores: die () Vs trigger_error () Vs throw Exception

En lo que respecta al manejo de errores en PHP: hasta donde sé, hay 3 estilos:

die() oexit() estilo:

$con = mysql_connect("localhost","root","password");

if (!$con) {
 die('Could not connect: ' . mysql_error());
}

throw Exception estilo:

 if (!function_exists('curl_init')) {

      throw new Exception('need the CURL PHP extension. 
                           Recomplie PHP with curl');
    }

trigger_error() estilo:

if(!is_array($config) && isset($config)) {
        trigger_error('Error: config is not an array or is not set', E_USER_ERROR);
    }

Ahora, en el manual de PHP se utilizan los tres métodos.

Lo que quiero saber es qué estilo debería preferir y por qué.

¿Son estos 3 reemplazos entre sí y, por lo tanto, se pueden usar indistintamente?

Slightly OT: ¿Soy yo o todos piensan que las opciones de manejo de errores de PHP son solodemasiado en la medida en que confunde a los desarrolladores de php?

Respuestas a la pregunta(2)

Su respuesta a la pregunta