php異常處理--try,throw,catch

php進行異常處理時,由於要避免一個系統漏洞與錯誤被黑客發現,一般都使用白屏模式使得錯誤不顯示,同時又得使自己查看到錯誤的原因,因此,我們可以將錯誤寫入文檔作爲日誌進行查詢,避免了不必要的系統漏洞。

/*

try //嘗試做某一件事情,如果這件事情做的時候嘗試異常,那麼就跳到catch裏面去執行
{
}
catch(Exception $e) //$e什麼,$e其實一個來自Exception類的實例(對象) Exception $e = new Exception
{
}
*/

//概念:什麼是錯誤?什麼是異常?
//PHP裏面錯誤認爲有以下幾種常見類型
//1.notice(注意,注意是可以不處理,可以忽略)
//2.Warning(警告,它屬於中級錯誤,是必須處理,因爲如果你不處理警告那麼可能會產生代碼的邏輯不能正常執行,warning錯誤後的代碼會照樣執行)

//3.error(致命性錯誤,是必須修改的,否則代碼無法運行,系統會崩潰)


//如果要自定義錯誤那麼就不要使用error_reporting(0);
ini_set( "display_errors","off" );
ini_set( "error_log","my_phperror/error.txt" );//將錯誤日誌寫入指定文檔
echo $var; 
echo "<br />";
error_log( "這裏還能執行1?" );
echo gettype();

error_log( "這裏還能執行2?" );


echo "<br />";
//getype();
error_log( "這裏還能執行嗎3?" );
echo "<br />###這裏可以被執行#<br />";

/********************************************
自定義數據庫異常類
1)鏈接異常類
2)選擇數據庫異常
3)操作數據庫異常函數:
mysql_error() : 返回所有數據庫操作錯誤信息(string)
mysql_errno() : 返回所有數據庫操作錯誤代碼(int)
mysql_select_db() : 返回一個選擇數據庫的布爾值信息,成功爲true,失敗爲false  (boolean)    
mysql_query() : 操作數據庫返回是混合數據類型失敗返回false,其他返回相關相信 (mixed)
mysql_connect():返回數據庫的鏈接資源,成功返回resource ,失敗返回flase( resource & boolean )
異常類的構造方法:
public __construct ([ string $message = "" [, int $code = 0 [, Exception 
$previous = NULL ]]] )
*********************************************/

define( "ERROR_LOG" , "error_logs/"  );
//鏈接異常的處理類
class connectException extends Exception
{
	function Handle( $config )
	{
		$date = date( "Ymd" );
		$log_file = ERROR_LOG."connect/mysql_error_{$date}.txt";//異常文件存儲位置
		echo "<br />處理數據鏈接異常,生成錯誤日誌處理文檔(mysql_error_{$date}.txt)<br />";
		$string ="鏈接數據庫失敗了".var_export( $config , true );
		file_put_contents( $log_file,$string );
	}
}
//選擇數據庫的處理類
class selectException extends Exception
{
	function Handle( $dbName )
	{
		$date = date( "Ymd" );
		$log_file = ERROR_LOG."select/selectdb_error_{$date}.txt";<span style="font-family: Arial, Helvetica, sans-serif;">//異常文件存儲位置</span>
		echo "<br />處理數據選擇異常,生成錯誤日誌處理文檔(selectdb_error_{$date}.txt)<br />";
		$string ="選擇數據庫失敗了,可能".$dbName."不存在";
		file_put_contents( $log_file,$string );
	}
}
//操作數據異常
class execException extends Exception
{
	function Handle( $sql )
	{
		$date = date( "Ymd" );
		$log_file = ERROR_LOG."exec/exec_error_{$date}.txt";<span style="font-family: Arial, Helvetica, sans-serif;">//異常文件存儲位置</span>
		echo "<br />sql異常,生成錯誤日誌處理文檔(exec_error_{$date}.txt)<br />";
		$string ="sql操作失敗了,錯誤操作語句".$sql;
		file_put_contents( $log_file,$string );
	}
}


/**
http://php.net/manual/en/function.error-log.php
http://php.net/manual/en/function.ini-set.php
**/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章