全面的知識請參考:
下面是自己的一點認識:
php的異常基本是這樣子的:
<?php
class customexception extends exception }
$email = "[email protected]";
try
} catch(exception $e)
catch (customexception $e)
?>
如果僅僅是throw new exception(....). 說明並不想區分不同的異常。在大範圍裡面catch,並不知道是誰產生的(當然了,這不對,因為上面的程式getline,getfile可以知道在**發生的異常)。但是,如果不區分,那麼就無法對不同型別的異常進行分別處理。不能區分是普通的錯誤,還是致命錯誤。
如果想區分,則需要定義不同的異常型別。可以自定義。上面的**體現了。
try一次可以catch多次。父類異常可以接受子類異常。所以多個catch的排列,應該是子類的放在前面。如果把子類放在後面,子類永遠別想catch。
catch處理程式裡面可以重新丟擲任意型別異常。
多個try可以巢狀。整體乙個try。內部還可以進行細緻的try處理。內部能解決的錯誤,就不丟擲到全域性解決。
原則:有丟擲,就必須捕獲。
更完整體現php 異常的**如下:
<?php
class customexception extends exception }
$email = "[email protected]";
try
} catch(exception $e)
}catch (customexception $e)
?>
ps:php使用返回值表徵程式是否錯誤,想對於c++有乙個優勢。php不嚴格區分型別。返回出錯return -1。 如果沒有出錯,則正常返回資料。這樣可以根據是否為-1來判斷程式是否出錯(當然如果返回結果有可能為-1,要另外處理)。在c++是不可能這樣的。要麼返回資料,要麼返回出錯**。導致了c++如果想通過返回值進行判斷出錯的話,只好將正真想要得到的資料,放到引數列表中。導致了不方便。
php雖然有這個天然的優勢,但是利用返回值其實還是有諸多不便。最裡面的那層出錯,返回-1.後面的每層都要繼續傳遞這個值。雖然也不難,原本也需要這樣做。但是可能更加容易出錯。而如果是丟擲異常的話,那麼就直接搞定了。不用在每層使用資料的時候判斷一下是否-1(因為如果是-1,那麼早就被throw了)。這樣就會邏輯更加清晰一些。耦合度降低。對c++更是福音了,可以用返回值返回資料了。
想使用異常,顯然要懂得怎麼進行繼承,異常類有哪些方法,繼承體系,內建一些異常型別等。 剩下的就是多用了。
PHP異常處理
php 4 require once cmd php4 command.php class commandmanager php if file exists path require once path if class exists cmd ret new cmd if is a ret,com...
PHP 異常處理
異常 exception 用於在指定的錯誤發生時改變指令碼的正常流程。php 5 提供了一種新的物件導向的錯誤處理方法。異常處理用於在指定的錯誤 異常 情況發生時改變指令碼的正常流程。這種情況稱為異常。當異常被觸發時,通常會發生 我們將展示不同的錯誤處理方法 當異常被丟擲時,其後的 不會繼續執行,p...
PHP 異常處理
php的異常機制 人世間,洗衣做飯,世事無常,常常嘆息,洗洗健康 有道是,出了異常要處理,不管不問心發慌 簡單的說,失戀 落榜 車禍 馬航 人世間所有你能預料或是不可預料的東西都可以稱為異常,遇到異常就要積極的去面對處理,而不是加個 符逃避 以下為乙個簡單的php異常使用demo 澡堂異常類 cla...