PHP錯誤與異常

錯誤報告關閉和打開php

php.ini 的 display_errors = On 或者 Offthis

代碼裏 ini_set(‘display_errors’,1) 或者 0spa


錯誤報告級別code

最佳實踐blog

開發環境下打開錯誤報告。而且錯誤報告級別 E_ALL
正式環境必定要關閉錯誤報告開發

//顯示全部的錯誤類型
error_reporting(E_ALL);

//顯示全部的錯誤類型,除了NOTICE 提示以外
error_reporting(E_ALL ^ E_NOTICE);
error_reporting(E_ALL &~ E_NOTICE);

//關閉全部的PHP錯誤報告
error_reporting(0);

//報告全部的錯誤類型
error_reporting(-1);

舉例get

try {
    //找不到文件
    throw new Exception('找不到文件',1);
    //沒有權限訪問
    throw new Exception('沒有權限',2);
} catch (Exception $e) {
    $errno =  $e -> getCode();

    if($errno == 1){
        echo $e -> getFile();
    }elseif($errno == 2){
        echo $e -> getLine();
    }
}

文件異常類it

class FileException extends Exception{
    public function fileInfo(){
        return $this->getMessage();
    }
}

try {
    print "open file";
    throw new FileException('file does not exist');
} catch (Exception $e) {
    print $e -> fileInfo();
}

捕獲多個異常io

class FileException extends Exception{}

//文件不存在的異常
class FileNotExistException extends FileException{}
//文件權限異常 
class FilePermissionException extends FileException{}

function fileHandle(){
    //文件不存在
    throw new FileNotExistException('file does not exist');

    //文件權限異常
    throw new FilePermissionException('access denied');

    //其餘異常
    throw new FileException('other exception');
}
try {
    fileHandle();
} catch (FileNotExistException $e) {
    echo $e -> getMessage();
}catch(FilePermissionException $e){
    echo $e -> getMessage();
}catch(FileException $e){
    echo $e -> getMessage();
}

全局異常處理function

<?php 
class FileException extends Exception{
    //文件不存在
    const FILE_NOT_EXIST = 1;
    //權限不夠
    const FILE_PERMISSION = 2;
}

function fileHandle(){
    //文件不存在
    throw new FileException('FilenotExist',FileException::FILE_NOT_EXIST);

    //權限不夠
    throw new FileException('FilePermission',FileException::FILE_PERMISSION);
}
try {
    fileHandle();
} catch (Exception $e) {
    switch ($e -> getCode()) {
        case FileException::FILE_NOT_EXIST:
            echo($e->getMessage());
            break;
        case FileException::FILE_PERMISSION:
            echo ($e -> getMessage());
            break;
    }
}catch(Exception $e){
    echo 'exception';
}
?>
------------------------------------------
<?php 
function defaultExceptionHandle($e){
    printf("uncaught exception:%s in file %s on line %d",$e->getMessage(),$e->getFile(),$e->getLine());
}

set_exception_handler('defaultExceptionHandle');
throw new Exception('tese......');
?>
相關文章
相關標籤/搜索