10.2.4 捕獲多個(gè)異常
在try代碼之后诬垂,必須至少給出一個(gè)catch代碼塊涨缚,也可以將多個(gè)catch代碼塊與一個(gè)try代碼塊關(guān)聯(lián)使用谊惭。那么使用多個(gè)catch就可以捕獲不同的類所產(chǎn)生的異常空骚。注意順序叠国。
test.php
<?php
/*
1. 自定義的異常類衩匣, 必須是系統(tǒng)類Exception的子類
2. 如果繼承Exception類蕾总, 重寫了構(gòu)造方法,一定要調(diào)一下父類中被覆蓋的方法
*/
//寫出對應(yīng)這個(gè)異常解決方法, 就是一下正常類的結(jié)構(gòu)
class MyBtException extends Exception{
function __construct($mess) {
parent::__construct($mess);
}
function changBt() {
echo "換上備胎!";
}
}
class WcException extends Exception {
function pro() {
echo "去公廁<br>";
}
}
class NoException extends Exception {
function pro() {
echo "買面色湊合一下!<br>";
}
}
class FlException extends Exception {
function pro() {
echo "走小路琅捏!<br>";
}
}
class Dm {
function gowc($bj) {
if(!$bj) {
throw new WcException("馬桶不好用了");
}
echo "哈哈生百, 事兒辦的很成功!<br>";
}
function eat($time) {
if(!$time) {
throw new NoException("起來晚了, 早餐沒了!");
}
echo "吃的很好!<br>";
}
function dri($dz) {
if(!$dz) {
throw new MyBtException("爆胎了");
}
echo "車開的不錯(cuò)!<br>";
}
function run($yu) {
if(!$yu) {
throw new FlException("天下雪了, 高速封路了");
}
echo "高速很好走!<br>";
}
}
echo "早上起床<br>";
try{
$dm = new Dm();
// 1. 上廁所 (馬桶不好用了), 去公廁
$dm -> gowc(true);
// 2. 吃早餐 (沒有早點(diǎn))柄延, 買面包
$dm -> eat(true);
//3. 開車上班 (爆tai) 換下
$dm ->dri(true);
//4. 上高速 (下雪) 小路
$dm->run(false);
} catch(MyBtException $e) { // Exception $e = new Exception('');
echo $e->getMessage()."<br>";
//自定義類中的解決方法調(diào)用蚀浆, 解決了問題
$e->changBt()."<br>";
try {
}catch(Exception $e) {
}
} catch(NoException $e) {
echo $e->getMessage()."<br>";
$e->pro();
} catch(WcException $e) {
echo $e->getMessage()."<br>";
$e->pro();
} catch(Exception $e) {
echo $e->getMessage()."<br>";
//$e->pro();
}
echo "到公司開始工作<br>";