开发者

PHP or MySql error; Possible to display an "error page" in browser?

开发者 https://www.devze.com 2022-12-30 07:58 出处:网络
My classifieds website uses mainly PHP and MySql. On error, (for example if a variable isn\'t found), I would like to have an error-page to show, is this possible? And I mean for every error to point

My classifieds website uses mainly PHP and MySql.

On error, (for example if a variable isn't found), I would like to have an error-page to show, is this possible? And I mean for every error to point to the same error-page.

I 开发者_StackOverflow中文版am thinking about htaccess, but maybe there are other ways also?

Same with MySql, how is it done there?

Thanks


Personally, I use error exceptions all the time (http://us.php.net/manual/en/class.errorexception.php)...

So, at the beginning of my code, I have the following:

function exception_error_handler($errno, $errstr, $errfile, $errline ) {
    throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");

Then, I wrap everyting in a giant try{}catch{} block. So I can "catch" the error higher, but if I don't, it displays an error message to the client:

ob_start();
try {
    //Do Stuff Here, include files, etc
} catch (Exception $e) {
    ob_end_clean();
    //Log the error here, including backtraces so you can debug later
    //Either render the error page here, or redirect to a generic error page
}

The beauty is that it'll catch ANY kind of error. So in my DB class, I simply throw a DatabaseException (which extends Exception). So I can try/catch for that when I make my call if I want to fail gracefully, or I can let it be handled by the top try{}catch block.


You can do stuff with the PHP error handling methods that will probably be what you are looking for. There is a decent tutorial here.


You can attach a custom error handler to do the redirect. First, enable output buffering, otherwise it is not possible to call the required header() function.

ob_start();

// This function will be our custom error handler
function redirect_on_error(int $errno , string $errstr) {
    // Ignore the error, just redirect the user to an error page
    ob_end_clean(); // Erase any output we might have had up to this point
    header('Location: error.html'); // Or wherever you want to redirect to
    exit;
}

set_error_handler('redirect_on_error'); // Set the error handler

// Your code goes here

ob_end_flush(); // End of the page, flush the output buffer
0

精彩评论

暂无评论...
验证码 换一张
取 消