zoukankan      html  css  js  c++  java
  • PHP学习5——异常处理

     主要内容:

    1. PHP错误类型
    2. 异常的产生
    3. 错误日志
    4. 日志信息记录到操作系统日志
    5. 异常处理
    6. 扩展异常处理类

    PHP错误类型

    • 语法错误
    • 执行时错误
    • 逻辑错误

    异常的产生

    如果安装了xampp之后,在php.ini中可以设置错误报告,配置文件路径:C:xamppphp

     

    可以使用error_reporting(0)关闭错误提示,使用error_reporting(E_ALL)报告所有错误

     在ini文件中使用;分号注释

    错误日志

    使用指定文件记录错误报告日志

    在开发的产品投入使用后,通常会把所有的错误提示都关闭,因为这些提示会影响消费者对产品的体验,而且曝露太多信息容易被黑客攻击。

    错误信息可以保存到单独的文本(日志文件)中而不要显示在浏览器中。

    默认情况都是配置好的,在程序中可以使用error_log($msg)来自定义错误信息

    error.php

    <?php
    	echo "ssdsds";
    	error_log("这是一段自定义的报错日志信息");
    ?>
    

      

    打开文件

    [06-Aug-2018 07:24:24 Europe/Berlin] 这是一段自定义的报错日志信息
    [06-Aug-2018 07:24:50 Europe/Berlin] 这是一段自定义的报错日志信息
    

      

    打开php.ini配置文件

    报告PHP所有错误

    设置PHP报错日志地址:

     日志信息记录到操作系统日志

    常用方法

    • openlog($msg,$option,$facility)打开日志连接,比如openlog("php",LOG_PID,LOG_USER)
    • syslog($priority,$msg)生成日志消息,比如syslog(LOG_WARNING,"向syslog中发送自定义信息。。。")
    • closelog()关闭日志连接

    syslog.php

    <?php
    	openlog("PHP5",LOG_PID,LOG_USER);
    	syslog(LOG_WARNING,"向syslog发送自定义信息");
    	closelog();
    ?>
    

    自定的信息都被记录都爱系统日志中了,可以在计算机》管理》事件查看器》windows日志》应用程序》点击警告,即生成的信息。

    异常处理

    异常处理是一种可扩展、易维护的错误处理统一机制。

    异常处理的实现

    exception.php

    <?php
    	try{
    		$error="这是异常的提示信息";
    		throw new Exception($error);
    		echo "这里不会被执行";
    	}catch(Exception $e){
    		echo "错误信息:".$e->getMessage()."<br/>";;
    	}
    	echo "程序继续向下执行";
    ?>
    

      输出

    错误信息:这是异常的提示信息
    程序继续向下执行

    异常必须手动抛出,关键字是throw,比如 ,throw new Exception();,注意,在异常被处理后,程序会继续向下执行。

    扩展异常处理类

    Exception类是所有异常的基类,可以通过继承来扩展它。

    Exception.php

    <?php
    	//异常类
    	class Exception{
    		protected $message='Unknow exception';
    		protected $code=0;
    		protected $file;
    		protected $line;
    		//构造方法
    		public function __construct($message=null,$code=0,$previous=null){};
    		public function __toString();//可重载,用于返回可输出的字符串
    		final public function getMessage();//返回异常信息
    		final public function getCode();//返回异常代码
    		final public function getFile();//返回发生异常的文件名
    		final public function getLine();//返回发生异常的代码行号
    		final public function getTrace();//数组形式返回异常传递的线路
    		final public function getPrevious();//返回格式化异常
    		final public function getTraceAsString();//返回格式化字符串的getTrace信息
    	}
    ?>
    

      现在我们定义自己的异常类

    myException.php

    <?php
    	//异常类
    	class cakeException extends Exception{
    		public function __toString(){
    			return "这个蛋糕过期了<br/>";
    		}
    	}
    	//异常类
    	class pearException extends Exception{
    		public function __toString(){
    			return "这个梨子烂了<br/>";
    		}
    	}
    	//异常类
    	class appleException extends Exception{
    		public function __toString(){
    			return "这个苹果坏了<br/>";
    		}
    	}
    	
    	try{
    		throw new cakeException();
    	}catch(Exception $e){
    		echo $e;
    	}
    	try{
    		throw new appleException();
    	}catch(Exception $e){
    		echo $e;
    	}
    	try{
    		throw new pearException();
    	}catch(Exception $e){
    		echo $e;
    	}
    	
    	
    ?>
    

      输出

    这个蛋糕过期了
    这个苹果坏了
    这个梨子烂了
    

      上面都是直接抛出异常,在应用中,我们通过判断来抛出异常

    demo.php

    <?php
    
    	try{
    		$a=10;
    		if(isset($b)){
    			echo "程序正常执行";
    		}else{
    			throw new Exception();
    		}		
    	}catch(Exception $e){
    		echo "错误代码所在路径:".$e->getFile()."<br/>";
    		echo "错误代码所在行号:".$e->getLine()."<br/>";
    	}
    	echo "<br/>程序执行完毕<br/>";
    	
    ?>
    

      输出

    错误代码所在路径:C:xampphtdocsdemo.php
    错误代码所在行号:8
    
    程序执行完毕
    

      

    ok,关于异常处理就到这里了。

  • 相关阅读:
    请求headers处理
    requests模块
    urllib3
    urllib
    百度AI搜索引擎
    CSS层叠样式表--使用
    学习requests_html
    聚合新闻头条
    爬虫工程师的月薪如何?
    Linux日志系统
  • 原文地址:https://www.cnblogs.com/1906859953Lucas/p/9429850.html
Copyright © 2011-2022 走看看