浅谈PHP中的错误处理和异常处理


Posted in PHP onFebruary 04, 2017

错误处理:
    
    1. 语法错误
    2. 运行时的错误
    3. 逻辑错误

 

错误报告:
        
        错误E_ERROR
        警告E_WARNING
        注意E_NOTICE

开发阶段:开发时输出所有的错误报告,有利于我们进行调试

运行阶段:不要让程序输出任何一种错误报告

将错误报告写入日志中

一.   指定错误报告error_reporting=E_ALL(在php.inn)

二.   关闭错误输出display_errors=off(在php.ini中)

三.   开启错误日志的功能log_errors=on(在php.ini中)

1. 默认如果不指定错误日志位置,则默认写入web服务器的日志中

2. 为error_log选项指定一个文件名,这个文件名就是错误日志

3. 写入到操作系统日志中error_log=syslog

<?php
//注意和警告都不会终止程序的运行,但是错误会终止程序的运行

/*
错误E_ERROR
警告E_WARNING
注意E_NOTICE
*/
//所有的错误都输出除了注意
error_reporting(E_ALL & ~E_NOTICE);

//设置配置文件的值(临时)
//ini_set("upload_max_filesize", 2000000000);

//得到配置文件的值
//ini_get("upload_max_filesize");

//关闭错误报告的显示,一般在运行阶段使用
ini_set("display_errors", "off");
//将错误报告写入日志中
ini_set("log_errors", "on");
//日志的目录
ini_set("error_log", "D:/error.log");
gettype($var);  //注意

gettype();    //警告

//getype();    //错误,程序终止

echo "############<br>";
?>

异常处理:意外,是在程序运行过程中发生的意料之外的事,使用异常改变脚本正常流程

 PHP5中的一个新的重要特性

    try{

    }catch(异常对象){

    }

1.  如果try中代码没有问题,则将try中代码执行完成后就到catch后执行

2.  如果try中代码有异常发生,则抛出一个异常对象(使用throw),抛出给了catch中的参数,则在try中出现异常代码后的内容就不会执行,直接跳转到catch中去执行,catch中执行完成,再继续向下执行

<?php
try{
  echo "11111111<br>";
  $file=@fopen("./hello.txt","r");
  if(!$file){
    throw new Exception("文件打开失败");
    
  }
  echo "2222222222<br>";
}catch(Exception $e){
  echo "3333333<br>";
  echo $e->getMessage()."<br>";
  touch("hello.txt");
  $file=@fopen("./hello.txt","r");
}
echo "4444444<br>";
?>

以上这篇浅谈PHP中的错误处理和异常处理就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP新手上路(十四)
Oct 09 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
Dec 29 PHP
php xml 入门学习资料
Jan 01 PHP
基于php-fpm 参数的深入理解
Jun 03 PHP
php修改指定文件后缀的方法
Sep 11 PHP
PHP多个文件上传到服务器实例
Oct 29 PHP
学习php设计模式 php实现抽象工厂模式
Dec 07 PHP
[原创]PHP字符串中插入子字符串方法总结
May 06 PHP
Laravel4中的Validator验证扩展用法详解
Jul 26 PHP
php实现头像上传预览功能
Apr 27 PHP
Laravel5框架添加自定义辅助函数的方法
Aug 01 PHP
thinkphp5.1 框架钩子和行为用法实例分析
May 25 PHP
详谈PHP中的密码安全性Password Hashing
Feb 04 #PHP
php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)
Feb 04 #PHP
PHP水印类,支持添加图片、文字、填充颜色区域的实现
Feb 04 #PHP
Yii2下session跨域名共存的解决方案
Feb 04 #PHP
浅谈PHP的$_SERVER[SERVER_NAME]
Feb 04 #PHP
php基于dom实现读取图书xml格式数据的方法
Feb 03 #PHP
php基于dom实现的图书xml格式数据示例
Feb 03 #PHP
You might like
php 数组的合并、拆分、区别取值函数集
2010/02/15 PHP
PHP面向对象之旅:深入理解static变量与方法
2014/01/06 PHP
CI框架中通过hook的方式实现简单的权限控制
2015/01/07 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
2016/11/14 PHP
ext 代码生成器
2009/08/07 Javascript
解决JS浮点数运算出现Bug的方法
2013/03/12 Javascript
jQuery基础_入门必看知识点
2016/07/04 Javascript
AngularJs基本特性解析(一)
2016/07/21 Javascript
JS中BOM相关知识点总结(必看篇)
2016/11/22 Javascript
AngularJS基于MVC的复杂操作实例讲解
2017/12/31 Javascript
微信小程序实现动态显示和隐藏某个控件功能示例
2018/12/14 Javascript
NodeJs入门教程之定时器和队列
2019/03/08 NodeJs
JS实现根据详细地址获取经纬度功能示例
2019/04/16 Javascript
layui点击弹框页面 表单请求的方法
2019/09/21 Javascript
Vue中qs插件的使用详解
2020/02/07 Javascript
微信小程序 wx.getUserInfo引导用户授权问题实例分析
2020/03/09 Javascript
[51:17]Mski vs VGJ.S Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
[44:40]Serenity vs Pain 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
使用Python脚本将绝对url替换为相对url的教程
2015/04/24 Python
Python中title()方法的使用简介
2015/05/20 Python
pygame 精灵的行走及二段跳的实现方法(必看篇)
2017/07/10 Python
详解如何将python3.6软件的py文件打包成exe程序
2018/10/09 Python
python+tkinter实现学生管理系统
2019/08/20 Python
简单的Python调度器Schedule详解
2019/08/30 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
2021/01/12 Python
Python try except finally资源回收的实现
2021/01/25 Python
为什么说Ruby是一种真正的面向对象程序设计语言
2012/10/30 面试题
本科生求职简历的自我评价
2013/10/21 职场文书
初中音乐教学反思
2014/01/12 职场文书
小学师德师风演讲稿
2014/09/02 职场文书
银行职员工作失误检讨书
2014/10/14 职场文书
安全隐患整改报告
2014/11/06 职场文书
2015年出纳个人工作总结
2015/04/02 职场文书
九年级化学教学反思
2016/02/22 职场文书
MySQL 隔离数据列和前缀索引的使用总结
2021/05/14 MySQL
手写Spirit防抖函数underscore和节流函数lodash
2022/03/22 Javascript