异常处理 - PHP手册笔记

原文:异常处理 - PHP手册笔记

PHP代码中所产生的异常可被throw语句抛出,并被catch语句捕获。需要进行异常处理的代码都必须放入try代码块内,每一个try至少要有一个与之对应的catch。当一个异常被抛出时,所在代码块后面的代码将不会继续执行,此时PHP会尝试查找第一个能与之匹配的catch。当然,PHP允许在catch代码块内再次抛出throw异常。如果一个异常没有被捕获,且未使用set_exception_handler()作相应处理的话,PHP将会产生一个严重错误。

这里有一个关于异常使用的示例。

<?php
function inverse($x) {
    if(!$x) {
        throw new Exception('Division by zero.');
    } else {
        return 1 / $x;
    }
}
try {
    echo inverse(5) . '<br>';
    echo inverse(0) . '<br>';
} catch(Exception $e) {
    echo 'Caught exception: ' . $e->getMessage() . '<br>';
}
echo 'hello';

还有一个异常嵌套的示例。

<?php
class MyException extends Exception {}
class Test {
    public function testing() {
        try {
            try {
                throw new MyException('foo.');
            } catch(MyException $e) {
                throw $e;
            }
        } catch(Exception $e) {
            var_dump($e->getMessage());
        }
    }
}
$foo = new Test;
$foo->testing();

用户可以用自定义的异常处理类来扩展PHP内置的异常处理类。

(全文完)

时间: 2024-10-01 18:58:31

异常处理 - PHP手册笔记的相关文章

类与对象 - PHP手册笔记

原文:类与对象 - PHP手册笔记 基本概念 PHP对待对象的方式与引用和句柄相同,即每个变量都持有对象的引用,而不是整个对象的拷贝. 当创建新对象时,该对象总是被赋值,除非该对象定义了构造函数并且在出错时抛出了一个异常.类应在被实例化之前定义. 创建对象时,如果该类属于一个名字空间,则必须使用其完整名称. 在类定义内部,可以用new self和new parent创建对象. <?php $instance = new stdClass(); $assigned = $instance; $re

类型 - PHP手册笔记

原文:类型 - PHP手册笔记 类型简介 PHP 支持 8 种原始数据类型. 四种标量类型: boolean(布尔型,不区分大小写) integer(整型) float(浮点型,也称作double) string(字符串) 两种复合类型: array(数组) object(对象) 最后是两种特殊类型: resource(资源) NULL(无类型) 如果想查看某个表达式的值和类型,用var_dump()函数. <?php $a = array(1, 2, array("a", &q

变量 - PHP手册笔记

原文:变量 - PHP手册笔记 基础 PHP中的变量用一个美元符号后面跟变量名来表示.变量名是区分大小写的,并且出现中文可能也是合法的. 变量默认总是传值赋值.PHP也提供了另外一种方式给变量赋值:引用赋值.这意味着新的变量简单的引用(换言之,"成为其别名" 或者 "指向")了原始变量.改动新的变量将影响到原始变量,反之亦然.使用引用赋值,简单地将一个&符号加到将要赋值的变量前(源变量).注意,只有有名字的变量才可以引用赋值. 预定义变量 PHP拥有大量预定

引用 - PHP手册笔记

原文:引用 - PHP手册笔记 引用是什么 PHP中的引用意味着,用不同的变量名访问同一变量内容,类似于Unix的文件名和文件本身(变量名是目录条目,变量内容是文件本身,即用不同的目录条目访问同一文件),可以看做Unix文件系统中的硬链接. 文件系统中的链接有两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接.硬连接指通过索引节点来进行的连接.在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个

函数 - PHP手册笔记

原文:函数 - PHP手册笔记 用户自定义函数 函数无需在调用前被定义,除非是有条件定义的. PHP中的所有函数和类都具有全局作用域.PHP不支持函数重载,也不可能取消定义或者重定义已声明的函数. 特意试了下,我的电脑上的PHP递归栈的最大深度为100. 函数参数 PHP支持按值传递参数(默认).通过引用传递参数以及默认参数.也支持可变长度参数列表.PHP允许使用数组和特殊类型NULL作为默认参数.如果希望允许函数修改参数值,必须通过引用传递参数. 注意!当使用默认参数时,任何默认参数必须放在任

流程控制 - PHP手册笔记

原文:流程控制 - PHP手册笔记 脚本由语句构成,语句靠流程控制实现功能,这一节主要介绍了几个关键字的使用. elseif elseif和else if的行为完全一样,如果用冒号来定义if/elseif条件,那就不能用两个单词的else if,否则PHP会产生解析错误. <?php $a = 1; $b = 2; if($a > $b) : echo "$a is greater than $b"; elseif($a == $b) : echo "$a equ

常量 - PHP手册笔记

原文:常量 - PHP手册笔记 常量语法 常量在脚本执行期间其值不能改变.常量大小写敏感,传统上常量标识符总是大写.常量一旦定义就不能被重新定义或取消定义,常量的值只能是标量. 可以用define()函数来定义常量,也可以使用const关键字在类定义之外定义常量.自定义常量不要以双下划线开头,可能会与魔术常量冲突. define('FOO', 'something'); const FOO = 'something'; 使用const关键字定义常量必须处于最顶端的作用区域,因为用此方法是在编译时

命名空间 - PHP手册笔记

原文:命名空间 - PHP手册笔记 概述 命名空间是一种封装事物的方法.在很多地方都可以见到这种抽象概念,比如在操作系统中,目录用来将相关文件分组,对于目录中的文件来说,目录就扮演了命名空间的角色.这个原理应用到程序设计领域就是命名空间的概念.PHP 5.3后的版本开始支持命名空间. 定义命名空间 命名空间通过关键字namespace来声明.任何合法的PHP代码都可以包含在命名空间中,但只有类.函数和常量这三种类型受命名空间的影响. 在声明命名空间之前唯一合法的代码是用于定义源文件编码方式的de

运算符 - PHP手册笔记

原文:运算符 - PHP手册笔记 运算符优先级 每种编程语言都有运算符,运算符要学会灵活使用. 运算符拥有不同的优先级和结合方向. <?php var_dump(1 <= 1 == 1); // true var_dump(true ? 0 : true ? 1 : 2); // 2 $a = 1; var_dump(++$a + $a++); // may print 4 or 5 在需要的时候使用括号,可以增强代码的可读性. 算术运算符 取模运算符的结果和被除数的符号相同. 赋值运算符将原