1. 程式人生 > >PHP中try catch處理多個異常捕獲

PHP中try catch處理多個異常捕獲

<?php
//建立四個exception的子類,每個子類中分別有一個可以解決異常問題的方法
class wcexception extends exception{
function pro(){
echo "去公廁上廁所<br>";
}
}
class noexception extends exception{
function pro(){
echo "去公司附近吃早餐<br>";
}
}
class gsexception extends exception{
function pro(){
echo "走普通的公路<br>";
}
}
class luexception extends exception{
function pro(){
echo "換上備胎<br>";
}
}
//定義一個類,包含四種方法對應四種行為,用條件判斷如果行為有異常則丟擲異常

class dm{
function gowc($bj){
if(!$bj){
throw new wcexception("倒黴催的,廁所壞了<br>");
}
echo "上廁所順利<br>";
}
function zc($time){
if(!$time){
throw new noexception("沒時間吃早餐了<br>");
}
echo "早餐很好吃<br>";
}
function sgs($xx){
if(!$xx){
throw new gsexception("下雪高速封路<br>");
}
echo "上高速很順利<br>";
}
function drive($dz){
if(!$dz)
throw new luexception("車子爆胎了<br>");
echo "開車一路順利<br>";
}
}
echo "早上起床!<br>";
try{
//建立一個物件,下面呼叫四個方法分別對應四種可能導致異常的行為

$ob=new dm();
//上廁所
$ob->gowc(true);
//吃早餐
$ob->zc(true);
//上高速
$ob->sgs(false);
//開車
$ob->drive(false);
}
//一個try可以對應多個catch
catch(wcexception $e){
echo $e->getmessage();
$e->pro();
}
catch(noexception $e){
echo $e->getmessage();
$e->pro();
}
catch(gsexception $e){
echo $e->getmessage();
$e->pro();
}
//最後一個catch中可以不用exception的子類,這樣可以用來捕獲漏網之魚,但不能寫出解決方案;

catch(exception $e){
echo $e->getmessage();
$e->pro();
}
echo "到公司開始工作<br>";
?>