鍍金池/ 問答/PHP/ thinkphp5 中有關(guān)源代碼上的一個(gè)問題

thinkphp5 中有關(guān)源代碼上的一個(gè)問題

1、問題

我自己在 tp5.1的源碼的時(shí)候,看到 注冊錯(cuò)誤和異常處理機(jī)制的時(shí)候,在 error.php 中看到一段代碼不是很理解

public static function appError($errno, $errstr, $errfile = '', $errline = 0)
    {
        $exception = new ErrorException($errno, $errstr, $errfile, $errline);
        if (error_reporting() & $errno) {
            // 將錯(cuò)誤信息托管至 think\exception\ErrorException
            throw $exception;
        }

        self::getExceptionHandler()->report($exception);
    }

這是error的處理函數(shù),
我對于其中 if (error_reporting() & $errno) 這一段特別不理解。

這個(gè)位運(yùn)算 在這里有什么意義?

回答
編輯回答
心沉

如果顯示錯(cuò)誤(error_reporting() > 0)且有錯(cuò)誤產(chǎn)生($errno > 0),則拋出異常
否則只記錄錯(cuò)誤

2018年7月10日 20:05
編輯回答
柚稚

整段代碼的作用是將你關(guān)注的錯(cuò)誤轉(zhuǎn)化成異常處理,否則出現(xiàn)錯(cuò)誤它就按照錯(cuò)誤的處理流程:記錄日志,而處理異常的流程里面除了記錄日志以外,它還會(huì)往客戶端發(fā)送對應(yīng)的響應(yīng)。其中那段位運(yùn)算就是用來判斷發(fā)生的錯(cuò)誤是不是你關(guān)注的錯(cuò)誤

2017年8月10日 08:27