PHP 使用 Exception 丟出自製的 錯誤訊息

PHP use Exception throw customs error message

40
很多人寫 PHP 不一定會使用 exception ,但是這其實是一個很好用的東西,它可以讓你掌握一些錯誤狀況,而且這些錯誤狀況是你去定義它的。當你客製化丟出一個例外的錯誤訊息時,你就必須要去處理它,一方面是警惕程式設計者,要處理這些例外的狀況,當你沒有處理時,PHP就會出現錯誤訊息,警告有例外錯誤出現、然而你並沒有處理。


這樣的好處在於,通常我們都是從一個小部分的程式碼或者功能寫起,在那個小部分的功能裡面,你可以很好的去掌握一些參數的檢查跟例外狀況的條件,此時你如果有使用exception時,當你未來使用到這個功能,沒有去處理他的例外時,自然 PHP 就會警告你,你便可以馬上知道要處理這些例外,才不會案子一大,有bug發生時,不曉得是哪裡的code發生了問題。


而且,還有一個好處,就是他可以區分錯誤的等級,藉由等級的不同,來做不同的處理。我們先來看,怎麼樣丟出一個簡單的錯誤

thorw new Exception("Here is Error Message");

上面的程式碼,就是很簡單的丟出一段錯誤訊息,那要怎麼處理這個錯誤呢?讓我們來寫一個稍微完整一點的程式碼。



function add(x, y)
{
if( x == 0)
{
throw new Exception("X can't be zero");
}
return x+y;
}
try
{
//只要有可能會有例外狀況的程式碼,都要寫在try的範圍裡面
echo add(5, 10);
echo add(0, 10);
}
catch(exception $e)
{
//當錯誤例外發生時,要怎麼處理,則寫在這個範圍裡面
echo $e->getMessage();
//這裡我們只是先簡單輸出錯誤的訊息
}

上面的例子我們看到,我們有一個 function 用來處理 x, y 的加法,但是我們特別的希望「X不能是零」,所以我多了一個判斷,當如果 X 是零的時候,就丟出一個例外錯誤,告訴執行這個函式的人有一個例外產生,並且告訴它、例外的訊息是什麼。


而當我們要執行具有「可能會丟出錯誤例外的程式」時,我們要把這些程式碼放在 try 這個範圍裡面,並且後面需要一個 catch 來接取當例外發生時,我們要做什麼處理,這樣就是一個簡單的例外處理範例。


那剛剛有提到,它可以針對不同的錯誤等級,做不同的錯誤處理,這個方式是透過丟出錯誤訊息時,連帶丟出一個錯誤的代碼,當然這個代碼也是你自己定義的

throw new Exception("Here is Error Message", 100);

上面看到我們除了丟出一個錯誤訊息之外,還丟出了一個錯誤代碼100,這樣在 catch 例外錯誤時,就可以多一個判斷代碼是多少,應該要做什麼樣的處理。

try
{
//some code has throw exception here
}
catch(exception $e)
{
//我們透過getCode() 來取得它的錯誤代碼
if($e->getCode() == 100)
{
echo "Code 100 Error";
}
else
{
echo "Other Error";
}
}

透過 getCode() 可以取得錯誤代碼(如果丟出錯誤時沒有給,會得到0),這樣就可以針對不同的錯誤狀況,做不同的例外處理了。
喜歡我們的文章嗎
給一個讚吧~^^
本站聲明
目前偵測到您現在處於未登入的狀況中 若在此狀態進行收藏很有可能導致資料遺失或錯誤 建議先行登入後重新執行步驟,不僅能保障收藏資料也能獲得最新的資訊唷! kikinote小精靈關心您!
不再顯示此視窗