千家信息网

PHP中怎么捕获异常并处理

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇文章给大家分享的是有关PHP中怎么捕获异常并处理,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
千家信息网最后更新 2026年11月03日PHP中怎么捕获异常并处理

本篇文章给大家分享的是有关PHP中怎么捕获异常并处理,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。


header("Content-type:text/html;charset=utf-8");

try

{

//业务处理 错误时抛出异常。

$age = 130;

if ($age > 120) {

throw new Exception('年龄不能大于120岁。', 1001);

}

} catch (Exception $e) {

$err = [

'code' => $e->getCode(),

'msg' => $e->getMessage(),

'file' => $e->getFile(),

'line' => $e->getLine()

];

echo json_encode($err);

}

输出:{"code":1001,"msg":"\u5e74\u9f84\u4e0d\u80fd\u5927\u4e8e120\u5c81\u3002","file":"\/data\/mi\/demo.php","line":11}

自定义异常处理

header("Content-type:text/html;charset=utf-8");

class proException extends Exception

{

//根据业务需求,自定义方法

/**

* 获取错误信息

* @param int $type 类型 1=json 2=数组

* @return array

*/

public function getErrorInfo($type = 2)

{

$err = [

'code' => $this->getCode(),

'msg' => $this->getMessage(),

'file' => $this->getFile(),

'line' => $this->getLine()

];

if ($type == 1) {

return json_encode($err);

}

return $err;

}

}

try

{

//业务处理 错误时抛出异常。

$age = 130;

if ($age > 120) {

throw new proException('年龄不能大于120岁。', 1001);

}

} catch (proException $e) {

$info = $e->getErrorInfo();

var_dump($info);

}

输出:array(4) { ["code"]=> int(1001) ["msg"]=> string(27) "年龄不能大于120岁。" ["file"]=> string(17) "/data/mi/demo.php" ["line"]=> int(53) }

捕捉多个异常

header("Content-type:text/html;charset=utf-8");

class proException extends Exception

{

//根据业务需求,自定义错误方法

/**

* 获取错误信息

* @param int $type 类型 1=json 2=数组

* @return array

*/

public function getErrorInfo($type = 2)

{

$err = [

'code' => $this->getCode(),

'msg' => $this->getMessage(),

'file' => $this->getFile(),

'line' => $this->getLine()

];

if ($type == 1) {

return json_encode($err);

}

return $err;

}

}

try

{

if ($_GET['age'] > 100) {

throw new proException('自定义的异常处理', 1002);

} else {

throw new Exception('系统的异常处理', 1002);

}

} catch (proException $e) {

$info = $e->getErrorInfo();

var_dump($info);

} catch (Exception $e) {

echo $e->getMessage();

}

?age=110 输出:array(4) { ["code"]=> int(1002) ["msg"]=> string(24) "自定义的异常处理" ["file"]=> string(17) "/data/mi/demo.php" ["line"]=> int(64) }

?age=20 输出:系统的异常处理。

日志记录

//禁止错误输出

error_reporting(0);

//设置错误处理器

set_error_handler('errorHandler');

//在脚本结束时运行的函数

register_shutdown_function('fatalErrorHandler');

/**

* 错误处理

* @param int $err_no 错误代码

* @param string $err_msg 错误信息

* @param string $err_file 错误文件

* @param int $err_line 错误行号

* @return string

*/

function errorHandler($err_no = 0, $err_msg = '', $err_file = '', $err_line = 0)

{

$log = [

'['.date('Y-m-d h-i-s').']',

'|',

$err_no,

'|',

$err_msg,

'|',

$err_file,

'|',

$err_line

];

$log_path = '/data/mi/test.txt';

error_log(implode(' ',$log)."\r\n",3, $log_path);

//echo implode(' ',$log)."
";

}

/**

* 捕捉致命错误

* @return string

*/

function fatalErrorHandler() {

$e = error_get_last();

switch ($e['type']) {

case 1:

errorHandler($e['type'], $e['message'], $e['file'], $e['line']);

break;

}

}

class DemoClass_1

{

public function index()

{

//这里发生一个警告错误,出发errorHandler

echo $undefinedVarible;

}

}

$demo_1 = new DemoClass_1();

//这里发生一个警告错误,被errorHandler 捕获

$demo_1->index();

//发生致命错误,脚本停止运行触发 fatalErrorHandler

$demo_2 = new DemoClass_2();

$demo_2->index();

打开echo后 输出:

[2016-08-07 09-01-34] | 8 | Undefined variable: undefinedVarible | /data/mi/demo.php | 126

[2016-08-07 09-01-34] | 1 | Class 'DemoClass_2' not found | /data/mi/demo.php | 134

备注:

1. register_shutdown_function 也可以用于API调试中,记录每次请求值和返回值,方便调试。

2. 利用 "|" 分割的好处是,便于利用 awk 对日志进行分割处理。

以上就是PHP中怎么捕获异常并处理,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

错误 处理 输出 业务 信息 年龄 数组 方法 日志 更多 知识 篇文章 类型 系统 脚本 需求 运行 实用 代码 函数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 什么是科技互联网 百单网互联网科技有限公司怎么样 科技企业和互联网企业 青岛互联网科技公司 贷财互联网科技 互联网科技缩写 碳银互联网科技有限公司 人人互联网科技是培训 金融科技和互联网金融 盛创互联网科技有限公司 剑昆互联网络科技有限公司临桂 小米互联网科技园设置 智腾互联网科技有限公司 银川新华互联网科技学校联系电话 佛山市拉法互联网科技有限公司 有人说阿里系是互联网科技企业 2021世界互联网领先科技成果发布 互联网科技手机排行榜 科技美学互联网 艺术 广州全民伙伴互联网科技有限公司 亿人帮互联网科技有限公司 致聘互联网科技 奇酷互联网络科技公司 兼蜜互联网科技 宁夏众和广鑫互联网科技有限公司 链环科技传统企业怎么转型互联网 南通创西澳互联网科技有限公司 恒生科技指数 中概互联网 北京品多多互联网科技有限公司 宁波允成互联网科技有限公司
0