<?php
 
/*
 
 * myException test
 
 */
 
 
 
 
 
if ( $ccwd == 'tests' ) {
 
    $oldpath = $iniget ('include_path');
 
    $iniset ('include_path', $newpath . ':' . $oldpath);
 
}
 
 
 
require_once 'myException.php';
 
 
 
# E_ERROR를 myException에서 다루고 싶다면 다음을 처리하도록 한다.
 
#error_reporting (E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE & ~E_ERROR);
 
#register_shutdown_function('myException::myShutdownHandler', 'fatal_error');
 
#function fatal_error ($dump) {
 
#    echo '::: Fatal Messages' . PHP_EOL;
 
#    print_r ($dump);
 
#}
 
 
 
# PHP 자체의 에러를 myException에서 제어하고 싶다면 다음 라인의 주석을 풀어준다.
 
 
 
 
 
class myEX {
 
    function foo () {
 
        try {
 
            // mysql_connect function이 load 되지 않으면 myException으로
 
            // 에러 메세지를 전달한다.
 
                throw 
new myException ('Unsupported mysql_connect function', E_USER_ERROR); 
 
 
            /*
 
             * mysql_connect의 argument가 없기 때문에 argument 관련 E_WARNING
 
             * 이 발생하며, 기본적으로는 Exception에서 cache가 되지 않는다.
 
             * PHP Error를 cache하여 myException으로 보내려면, 아래의
 
             * set_error_handler line의 주석을 풀어줘야 한다.
 
             */
 
            $c = mysql_connect ();
 
        } catch ( Exception $e ) {
 
            throw 
new myException ($e->getMessage (), $e->getCode (), $e); 
        }
 
    }
 
}
 
 
 
$m = new myEX;
 
 
 
try {
 
    $m->foo ();
 
} catch ( Exception $e ) {
 
    echo $e->Message () . "\n";
 
    print_r ($e->TraceAsArray ()) . 
"\n";  
    $e->finalize ();
 
}
 
 
 
echo "E_ERROR 또는 E_USER_ERROR 에러가 발생하면 이 라인이 보이지 않습니다.\n";
 
?>