<?php
function addUser($username){
if($username!="test"){
throw new Exception("添加失败");
}
}
function updataUser($username){
if($username!="qb"){
throw new Exception("更新失败");
}
}
try{
addUser("test1");
updataUser("qb1");
}catch(Exception $e){
echo "失败";
error_log($e->getMessage(),3,"d:/mylog.txt");
}
?>
如上代码:
addUser 和 updataUser 任何一个为false就会抛出异常
如上代码还可以定义一个自定义的异常处理器(也叫顶级异常处理器)
代码如下:
<?php
function my_exception($e){
error_log("错误信息".$e->getMessage().$e->getLine()."行号",3,"d:/mylog.txt");
}
set_exception_handler("my_exception");//这玩意 跟错误处理器差不多。但是这个是用户自己定义的异常处理函数
function addUser($username){
if($username!="test"){
throw new Exception("添加失败");
}
}
function updataUser($username){
if($username!="qb"){
throw new Exception("更新失败");
}
}
try{
addUser("test");
updataUser("qb1");
}catch(Exception $e){
//echo "失败"; //
throw $e;
}
?>
异常释义
Table of Contents | 释义 |
---|---|
Exception::__construct | 异常构造函数 |
Exception::getMessage | 获取异常消息内容 |
Exception::getPrevious | 返回异常链中的前一个异常 |
Exception::getCode | 获取异常代码 |
Exception::getFile | 获取发生异常的程序文件名称 |
Exception::getLine | 获取发生异常的代码在文件中的行号 |
Exception::getTrace | 获取异常追踪信息 |
Exception::getTraceAsString | 获取字符串类型的异常追踪信息 |
Exception::__toString | 将异常对象转换为字符串 |
Exception::__clone | 异常克隆 |
自定义异常
<?php
class MyException1 extends Exception{
}
class MyException2 extends Exception{
}
function A(){
throw new MyException1();
}
function B(){
throw new MyException2();
}
try{
A();
B();
}catch(MyException1 $e1){
echo "11111";
}catch(MyException2 $e2){
echo "22222";
}
?>
NOTICE
在php中老版本的函数 有些事没有 try catch 处理机制的
代码:
<?php
try{
$i = 8/0;
}catch(Exception $e){
}
?>
如上代码:
运行输出:Warning: Division by zero in D:\phpStudy\WWW\exceptionSelf.php on line 3
所以 在php中 有的地方 还只能用错误处理机制因为方法执行本身并没有抛出异常所有何谈捕获一说。