PHP 错误与异常 笔记与总结(12 )异常
① 异常的概念;异常和错误的区别
PHP 部分借鉴了 C++ 和 JAVA 中的异常处理机制。PHP 中的异常是指 程序运行和预期不太一致,与错误是两个不同的概念。
② 异常的语法结构
【例1】
<?php
header('content-type:text/html; charset=utf-8');
/*
try{
要测试的代码段;
throw new Exception('异常信息');
}catch(Exception $e){
echo $e->getMessage();
}
*/
//显示所有错误
error_reporting(-1);
try{
$num1 = 1;
$num2 = 2;
if( 2 == $num2 ){
//抛出异常
throw new Exception('0不能当作除数');
}else{
$num = $num1 / $num2;
}
}catch(Exception $e){ //捕获异常
echo $e->getMessage();
}
echo 'continue';
捕获异常的前提是要 手动抛出异常(throw new Exception())。
页面输出:
0不能当作除数continue
语法结构:把需要测试的代码放到 try 代码段中,然后通过 catch 来捕获异常(可以在 catch 代码段中进行操作,例如输出异常信息);在 try 代码段的 throw 语句之后的代码不会被执行。当异常抛出后,立即寻找第一个与之匹配的捕获到的异常。
【例2】在使用 PDO 异常处理类时,不需要手动抛出异常即可捕获异常,例如当数据库密码错误时,系统会自动捕获异常(使用了内置异常类):
<?php
try{
$pdo = new Pdo('mysql:host = localhost; dbname = test', 'root', '123');
var_dump($pdo);
}catch(PDOException $e){
echo $e->getMessage();
}
echo 'continue';
页面输出:
SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: YES)continue
【例3】再例如 SPL(Standard PHP Library(PHP标准库),可以参考《PHP SPL笔记》)的异常处理,同样不需要手动抛出异常(使用了内置异常类):
<?php
try{
$splObj = new SPLFileObject('test.txt', 'r');//以“读”的方式打开test.txt(不存在)
echo 'read file';
}catch(Exception $e){
echo $e->getMessage();
}
echo 'continue';
页面输出:
SplFileObject::__construct(test.txt) [splfileobject.--construct]: failed to open stream: No such file or directorycontinue
③ 自定义异常类
④ 自定义异常处理器
⑤ 如何像处理异常一样处理 PHP 中的错误
⑥ 在发生错误的时候将用户重定向到另一个页面
PHP 错误与异常 笔记与总结(12 )异常的更多相关文章
- [异常笔记]poi读取Excel异常
Exception in thread "main" org.apache.poi.poifs.filesystem.OfficeXmlFileException: The sup ...
- PHP 错误与异常 笔记与总结(10)错误处理器测试
关联文件:myErrorHandler.php (上一篇) 先测试通知级别的错误的自定义处理: testErrorHandler.php <?php require_once 'myErrorH ...
- PHP 错误与异常 笔记与总结(4)通过 trigger_error 触发 PHP 错误
[错误抑制符@] 除了 php.ini 中 error_reporting 和 display_errors 的设置.error_reporting() 函数.ini_set() 函数 外,还可以使用 ...
- 【马克-to-win】学习笔记—— 第五章 异常Exception
第五章 异常Exception [学习笔记] [参考:JDK中文(类 Exception)] java.lang.Object java.lang.Throwable java.lang.Except ...
- 整理课堂笔记 pl/sql orcale异常
1>>>>>异常错误处理 1 >预定义的异常处理 预定义说明的部分 ORACLE 异常错误对这种异常情况的处理,只需在PL/SQL块的异常处理部分,直接引用相应 ...
- php错误以及常用笔记
//语法错误(syntax error)在语法分析阶段,源代码并未被执行,故不会有任何输出. /* [命名规则] */ 常量名 类常量建议全大写,单词间用下划线分隔 // MIN_WIDTH 变量名建 ...
- JavaSE学习笔记(6)---异常
JavaSE学习笔记(6)---异常 软件程序在运行过程中,非常可能遇到问题,我们称之为异常,英文是:Exception,意思是例外.遇到这些例外情况,或者叫异常,我们怎么让写的程序做出合理的处理 ...
- devi into python 笔记(五)异常 文件操作 sys os glob模块简单实用
异常: Java异常: try catch块处理异常,throw引发异常. Python异常: try except块处理异常,raise引发异常. 异常如果不主动处理,则会交给Python中的缺省处 ...
- [core java学习笔记][第十一章异常断言日志调试]
第11章 异常,断言,日志,调试 处理错误 捕获异常 使用异常机制的技巧 使用断言 日志 测试技巧 GUI程序排错技巧 使用调试器 11.1 处理错误 11.1.1异常分类 都继承自Throwable ...
- A Byte of Python 笔记(11)异常:try..except、try..finally
第13章 异常 当你的程序中出现某些 异常的 状况的时候,异常就发生了. 错误 假如我们把 print 误拼为 Print,注意大写,这样 Python 会 引发 一个语法错误. 有一个SyntaxE ...
随机推荐
- Sqlite实现默认时间为当前时间列的方法(转)
原文地址: http://blog.csdn.net/derryzhang/article/details/5033209 在SQL Server中,创建表格的时候,对于时间列有时候我们可以根据需要指 ...
- SharedPreferences(转)
[功能] 大家在android开发中 一点有这样的需求 就是需要保存一下与该程序有关的属性设置的问题 比如:window xp 中 <假设系统盘为 C:/> 的位置为: C:\Progra ...
- sqlserver日常维护脚本
SQL code --备份declare @sql varchar(8000) set @sql='backup database mis to disk=''d:\databack\mis\mis' ...
- php 字符串式非关联数组循环
$xiangmu='1,2,3'; $xiangmu=explode(',',$jc['xiangmu']); $xm=''; for($i=0;$i<count($f)-1;$i++){ $x ...
- Bash的基础知识man手册
Bash的基础知识man手册 由于基于Android类设备的渗透测试都是通过各类终端实现.所以掌握Shell相关操作就显得尤为重要.Bash是一个为GNU计划编写的Unix Shell本文选自基于An ...
- 面向对象之对象,作用域及this
object eg: var o = { a : 2, b : 3 }; console.log(o); console.log(typeof o); console.log(o.a.toFixed( ...
- 前端JSON使用总结
JSON: JavaScript Object Notation(JavaScript 对象表示法)的简称. 1. 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaS ...
- jQuery对表单、表格的操作及更多应用(下:其他应用)
内容摘录自锋利的JQuery一书 三.其他应用 1 网页字体大小控制(P164) <span class="bigger">放大</span> <s ...
- DP ZOJ 3735 Josephina and RPG
题目传送门 题意:告诉你C(m,3)个队伍相互之间的胜率,然后要你依次对战n个AI队伍,首先任选一种队伍,然后战胜一个AI后可以选择替换成AI的队伍,也可以不换,问你最后最大的胜率是多少. 分析:dp ...
- POJ2763 Housewife Wind(DFS序)
题目:单边修改,树链查询. 这题是边权,不是点权,不过也可以看作是点权. 然后其实就和BZOJ2819一样. #include<cstdio> #include<cstring> ...