1、首先php5提供了基本的异常处理类,可直接使用

<?php
class Exception
{protected $message = 'Unknown exception';   // 异常信息protected $code = 0;                        // 用户自定义异常代码protected $file;                            // 发生异常的文件名protected $line;                            // 发生异常的代码行号function __construct($message = null, $code = 0);final function getMessage();                // 返回异常信息final function getCode();                   // 返回异常代码final function getFile();                   // 返回发生异常的文件名final function getLine();                   // 返回发生异常的代码行号final function getTrace();                  // backtrace() 数组final function getTraceAsString();          // 已格成化成字符串的 getTrace() 信息/* 可重载的方法 */function __toString();                       // 可输出的字符串
}
?>

简单的使用如下:(通过异常,抛出错误信息)

try {$error = 'my error!';throw new Exception($error)
} catch (Exception $e) {echo $e->getMessage();
}

2、我们可以扩展此类,方便我们的使用

class MyException extends Exception
{// 重定义构造器使 message 变为必须被指定的属性public function __construct($message, $code = 0) {// 自定义的代码// 确保所有变量都被正确赋值parent::__construct($message, $code);}// 自定义字符串输出的样式public function __toString() {return __CLASS__ . ": [{$this->code}]: {$this->message}\n";}public function customFunction() {echo "A Custom function for this type of exception\n";}
}

  异常处理的基本思想是代码在try代码被调用执行。如果try码块出现错误,我们可以执行一个抛出异常的处理。某些编程语言,如java,,在特定情况下将自动抛出异常。在php中,异常必须手动抛出。可以使用如下方式抛出一个异常:

  Throw new Exception(‘message’,code);

  Throw 关键字将触发异常处理机制,它是一个语言结构,而不是一个函数,但是必须给它传递一个值。它要求一个接受对象。在最简单的情况下,可以实例化一个内置的Exception类。

  最后,在try代码之后,必须至少给出一个catch代码块。可以将多个catch代码块与一个try代码块进行关联。如果每个catch代码块可以捕获一个不同类型的异常,可以使用多个catch代码块是有意义的。例如,如果想捕获Exception类的异常,代码如下

Catch(Exception $e){//handing exception

}Catch代码捕获的对象就是导致异常并传递给throw语句的对象(被throw 语句抛出)。使用Exception 类的实例,是不错的选择。Exception类提供了如下的内置方法:Getcode()      —返回传递给构造函数的代码。GetMessage()    —返回传递给构造函数的消息。getFile()     —返回产生异常代码的文件的路径getLine()    —返回产生异常的代码所在的行。

注意:

  1. 当捕获到一个异常后,try()块里面的后续代码将不会继续执行,而是会尝试查找匹配的“catch”代码块
  2. 当抛出一个异常后,如果不进行catch处理,则会报“Uncaught exception 'Exception'”错误
<?phpfunction test($val){if ($val>100){throw new Exception("提示信息:您输入的值过大");}}test(111);
?>

  3.当一个异常抛出后,catch语句块可以进行处理也可以不处理

以下是我用户注册功能的部分代码

try{//check forms filled inif(!filled_out($_POST)){throw new Exception('你还没有填写表单,请回去填写');}//check email address not validif(!check_email($email)){throw new Exception('邮件的格式不正确');}//检查密度的长度是否大于6if(strlen($passwd<6)){throw new Exception('密度的长度应该大于6');}//检查两次密码是否相等if($passwd!=$passwd1){throw new Exception('两次密码不一样,请重新输入');}//检查用户名的长度是否正确if(strlen($username)>16){throw new Exception('用户名的长度不符,请重新输入');}} catch(Exception $e){echo $e->getMessage(); //输出异常信息。}

转载自:http://www.cnblogs.com/zhmt/archive/2012/03/10/2389347.html 和 http://www.cnblogs.com/yangsen/archive/2012/01/30/2331595.html

【转】PHP的异常处理类Exception的使用及说明相关推荐

  1. C++异常处理类与自定义异常处理类

    转自:http://blog.csdn.net/makenothing/article/details/43273137 例1:自定义一个继承自excepton的异常类myException C++标 ...

  2. PHP异常处理类(文件上传提示)

    知识点: 大部分时候我们的代码总有各种各样的bug,新手程序员(比如我)最经常的工作就是不停的报错和echo变量,一个好的异常处理类可以帮我们更快+更容易理解报错代码的问题,同时,异常处理还可以避免一 ...

  3. php简单异常,PHP实现的简单异常处理类示例

    具体如下: header('content-type:text/html;charset=UTF-8'); // 创建email异常处理类 class emailException extends e ...

  4. 如何写一个完善的c++异常处理类

    我们的异常处理类的features 如何写一个异常处理类是一个不太容易的事情,最近刚好接触了一些不错的代码,看到了一些技巧,这里和大家分享一下. 一个相对完善的异常处理类(以及附加的一些东西)应该能够 ...

  5. php面向对象异常处理,PHP面向对象编程——自定义PHP异常处理类

    /* ?* WEB开发笔记 www.chhua.com 每日练习 PHP面向对象编程--自定义PHP异常处理类 ?* 这所以用自定义的异常类,主要是区分异常来自程序的哪一部分,比如是来自MYSQL的还 ...

  6. or1200处理器的异常处理类指令介绍

    下面内容摘自<步步惊芯--软核处理器内部设计分析>一书 我们在计算机体系结构的学习中知道:中断实质上包含由外部事件引起的硬中断(又称外中断)和由内部预先安排的特定指令或内部异常引起的软中断 ...

  7. springboot定义全局异常处理类GlobalExceptionHandler

    全局异常处理:GlobalExceptionHandler 定义全局异常处理类 以下为扩展部分 返回参数封装 引用示例 定义全局异常处理类 注意:如果需要返回页面,则要删掉@ResponseBody注 ...

  8. PHP 异常类 Exception 高洛峰 细说PHP

    /** 1.自定义的异常类,必须是系统类Exception的子类* 如果继承Exception类,重写了构造方法,一定要调用一下父类的构造方法.*/class MyException extends ...

  9. springboot统一异常处理类及注解参数为数组的写法

    springboot统一异常处理类及注解参数为数组的写法 参考文章: (1)springboot统一异常处理类及注解参数为数组的写法 (2)https://www.cnblogs.com/zhucww ...

最新文章

  1. Java实用教程笔记 类与对象
  2. 开源任务调度平台elastic-job-lite源码解析
  3. I春秋——web Write up(三)
  4. Linux学习之系统编程篇:MMU(Memory Manager Unit 内存管理单元)
  5. HP-UX的终端TERM要设置成什么,才能输入中文呢?
  6. Google Earth KML格式成为开放式国际标准
  7. java中userservice是什么,【图片】求助大神~~我在Reaml中注入userService对象启动tomcat就报错【java吧】_百度贴吧...
  8. Android中的界面组成
  9. [转] 电子技术*笔记4【2013-03】
  10. 简单java数组程序_最简单易懂的java数组排序方法整理
  11. SEO实战密码:60天网站流量提高20倍(第2版)
  12. 【odoo】odoo使用阿里邮箱配置邮件系统
  13. [WinError 193] %1 不是有效的 Win32 应用程序问题解决
  14. 乌镇现场 | 倪光南:人工智能应该更好的为人类的服务
  15. B150主板Win7系统出现蓝屏且提示错误代码0x000000C5的原因及解决方法
  16. 通过PC控制、操作andriod 手机-androidscreencast
  17. 简单典型二阶系统_MIT—微分方程与线性代数笔记2.1 二阶常微分方程
  18. shell中的if语句
  19. 编写一个函数int isPrime(int x),当x是素数时,返回1,否则返回0; 在main函数中,输入一个正整数,如果是素数输出Y,否则输出N。
  20. 今年9月开学!香港科技大学(广州)人工智能专业已开始招生!

热门文章

  1. mac下面安装mysql
  2. spark streaming kafka Couldn't find leader
  3. Win2008 R2 IIS7.5+PHP5(FastCGI)+MySQL5环境搭建教程
  4. 语句include和require的区别是什么?
  5. 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛B: Out-out-control cars
  6. PHP排序算法的复习和总结
  7. Android模拟器(包括Genymotion)访问本机服务器
  8. unix 网络编程卷2 第43页 管道:open竟然会阻塞?
  9. [物理学与PDEs]第2章第2节 粘性流体力学方程组 2.6 一维粘性热传导流体动力学方程组...
  10. [Umbraco] 创建第一个页面