set_time_limit(0);
ini_set('memory_limit','1024M'); function exception_handler($exception) {
echo "Uncaught exception: " , $exception->getMessage(), "\n";
} set_exception_handler('exception_handler'); function customError($errno, $errstr)
{
throw new Exception($errstr);
}
set_error_handler("customError", E_ALL); try{
//throw new Exception('Uncaught Exception');
trigger_error("Cannot divide by zero", E_USER_ERROR);
}catch(Exception $e){
throw new Exception($e->getMessage());
}
echo '111';
exit;

上面把产生错误(包含警告)时,抛出异常,就把错误处理交给自定义的异常处理方法处理了

try{ ... }catch(Exception $e){ ... } try段里如果抛出异常,有catch,则对应catch处理;无catch,则set_exception_handler自定义异常处理,如无自定义异常处理,则选择php语言本身的异常处理方式。try段里如果产生错误,有set_error_handler自定义处理处理,则选择定义处理处理,如无,则选择php语言本身的错误处理方式。很明显上面代码set_error_handler自定义处理是抛出异常,等同于最终统一了错误和异常处理方式都是交给set_exception_handler自定义的异常处理。

上面代码可以不用显示catch语句,效果等同。

set_time_limit(0);
ini_set('memory_limit','1024M'); function exception_handler($exception) {
echo "Uncaught exception: " , $exception->getMessage(), "\n";
} set_exception_handler('exception_handler'); function customError($errno, $errstr)
{
throw new Exception($errstr);
}
set_error_handler("customError", E_ALL); try{
//throw new Exception('Uncaught Exception');
trigger_error("Cannot divide by zero", E_USER_ERROR);
}
echo '111';
exit;

  

php 处理错误和异常技巧的更多相关文章

  1. python的错误和异常

    python错误和异常 错误 错误分为语法错误和逻辑错误 语法错误 >>> if File "<stdin>", line 1 if ^ Syntax ...

  2. Python错误和异常学习

    一:错误解释 1.语法错误:代码不符合解释器或者编译器语法 2.逻辑错误:不完整或者不合法输入或者计算出现问题 代码运行前的语法或者逻辑错误,语法错误在执行前修改,逻辑错误无法修改 二:异常 执行过程 ...

  3. PHP 错误与异常 笔记与总结(10)错误处理器测试

    关联文件:myErrorHandler.php (上一篇) 先测试通知级别的错误的自定义处理: testErrorHandler.php <?php require_once 'myErrorH ...

  4. Go语言项目的错误和异常管理 via 达达

    Go语言项目的错误和异常管理 最近连续遇到朋友问我项目里错误和异常管理的事情,之前也多次跟团队强调过错误和异常管理的一些概念,所以趁今天有动力就赶紧写一篇Go语言项目错误和异常管理的经验分享. 首先我 ...

  5. Python学习笔记七-错误和异常

    程序员总是和各种错误打交道,学习如何识别并正确的处理程序错误是很有必要的. 7.1错误和异常 1.错误 从软件方面来看,错误分为语法错误和逻辑错误两种.这两种错误都将导致程序无法正常进行下去,当Pyt ...

  6. WebAPI 用ExceptionFilterAttribute实现错误(异常)日志的记录(log4net做写库操作)

    WebAPI 用ExceptionFilterAttribute实现错误(异常)日志的记录(log4net做写库操作) 好吧,还是那个社区APP,非管理系统,用户行为日志感觉不是很必要的,但是,错误日 ...

  7. php错误及异常捕捉

    原文:php错误及异常捕捉 在实际开发中,错误及异常捕捉仅仅靠try{}catch()是远远不够的. 所以引用以下几中函数. a)   set_error_handler 一般用于捕捉  E_NOTI ...

  8. PHP错误与异常

    请一定要注意,没有特殊说明:本例 PHP Version < 7 说起PHP异常处理,大家首先会想到try-catch,那好,我们先看一段程序吧:有一个test.php文件,有一段简单的PHP程 ...

  9. python 常见错误和异常 函数 正则表达式及多线程编程

    生成随机密码#!/usr/bin/env python import stringfrom random import choice def gen_pass(num=9): all_chs = st ...

随机推荐

  1. 【Linux开发】Linux动态链接库搜索路径问题

    说明:下列内容是从网上获取的,未经验证,仅作参考之用 动态库的搜索路径搜索的先后顺序是: (1).编译目标代码时指定的动态库搜索路径:(2).环境变量LD_LIBRARY_PATH指定的动态库搜索路径 ...

  2. 解读Nodejs多核处理模块cluste

    http://blog.fens.me/nodejs-core-cluster/ Node.js开发框架Express4.x   http://blog.fens.me/nodejs-express4 ...

  3. Springboot2.x集成单节点Redis

    Springboot2.x集成单节点Redis 说明 在Springboot 1.x版本中,默认使用Jedis客户端来操作Redis,而在Springboot 2.x 版本中,默认使用Lettuce客 ...

  4. 把对像生成json并存储到文件

    1.创建实体对像json import com.alibaba.fastjson.annotation.JSONField; import java.util.Date; public class S ...

  5. Distributed Deep Learning

    安利一下刘铁岩老师的<分布式机器学习>这本书 以及一个大神的blog: https://zhuanlan.zhihu.com/p/29032307 https://zhuanlan.zhi ...

  6. vue data数据变化 页面数据不更新问题

    问题: <template> <div class="container"> <div v-for="(item, index) in ar ...

  7. Java 关于SpringbootJPA分页及排序

    创建Pageable对象 看了网上很多博客,都是在用 new PageRequest的方法创建Pageable对象.可是估计很多同学写了之后才发现原来这个方法作者已经标记为过时了: 替代的方法是不要n ...

  8. CCPC-Wannafly Winter Camp Day1 (Div2, onsite) - I 起起落落

    题目描述 无聊的wlswls正在观察某个商品的价格,wlswls一共观察了nn天,每天这个商品都会有一个价格p_ipi​. 定义一个长度为2m+1(3\leq2m+1\leq n)2m+1(3≤2m+ ...

  9. ascii 八进制

    int main() 4 { 5 char buf[20] = {'\101','\102','\103',0}; 6 printf("%s",buf); 7 return 0; ...

  10. 去掉windows換行符^M

    在命令模式下运行命令 :%s/^M//g 回车注意:里面的^M 必须是同时按 Ctrl+V+M ,表示回车.不是直接输入 ^M,也不是粘帖复制.命令完成后,用:x 保存退出后,再次用vi打开就全部被替 ...