Как правильно организовать обработку ошибок на PHP?
Например.<?php

// Any expression you want
define('IN_DEV', $_SERVER['REMOTE_ADDR'] === '127.0.0.1');

error_reporting(-1);
ini_set('display_errors', IN_DEV);

/**
 * Error handler
 *
 * @param int $severity Errno
 * @param string $msg Errstr
 * @param string $file Errfile
 * @param int $line Errline
 * @throws ErrorException
 */
function errhandler($severity, $msg, $file, $line)
{
    if (error_reporting() & $severity) {
        throw new ErrorException($msg, 0, $severity, $file, $line);
    }
}

/**
 * Exception handler
 *
 * @param Exception $e
 */
function exceptionHandler($e)
{
    if (IN_DEV) {
        // show error for developer
        echo $e->getMessage(), '<pre>', $e->getTraceAsString(), '</pre>';
    } else {
        // log error
        // file, database, whatever
    }
}

set_error_handler('errhandler', error_reporting());
set_exception_handler('exceptionHandler');
Внесу немного ясности:
- Есть ошибки и есть исключения - это два разных подхода.
- Т.к. PHP не везде использует исключения, то нужно мониторить ошибки.
- Т.к PDO и многие другие модули используют исключения, то их тоже нужно мониторить.
- Логировать ошибки и исключения нужно всегда, чтобы своевременно исправлять баги.
- Логи проще всего (и лучше всего) писать в файлы. Можно использовать несколько файлов (я лично разделяю на ошибки PHP и исключения работы с БД).
- Как это выглядит в коде выше написали