/**
* Class show
* 一个catch接收抛出异常
*/
class show
{
// 错误的演示
//try {
//require ('test_try_catch.php');
//} catch (Exception $e) {
//echo $e->getMessage();
//}
function try_catch()
{
/**
* try catch 演示
* Exception 异常类
* throw php函数 抛出
* throw new Exception('文件未找到');
* new Exception('可以定义自己想要的抛出异常')
* 每一个try一定要有至少一个对应的catch
* 抛出一个异常实例化的异常对象 catch接收
*
*/
// 正确的抛出异常
try {
if (file_exists('test_try_catch.php')) {
require ('test_try_catch.php');
} else {
throw new Exception('文件未找到');
}
} catch (Exception $e) {
return $e->getMessage();
}
} }
//
//$show = new show;
//echo $show->try_catch();

--------------------------------------------------------------------2-----------------------------------------------------------------------------------

class MyException extends Exception{
//重定义构造器使第一个参数message变为必须被指定的属性
public function __construct($message, $code=0){
//可以在这里定义一些自己的代码
//建议同时调用parent::construct()来检查所有的变量是否已被赋值
parent::__construct($message, $code);
}
//重写父类中继承过来的方法,自定义字符串输出的样式
public function __toString(){
return __CLASS__.":[".$this->code."]:".$this->message."<br>";
}
//为这个异常自定义一个处理方法
public function customFunction(){
echo "按自定义的方法处理出现的这个类型的异常";
}
} //创建一个用于测试自定义扩展的异常类MyException
class TestException{
public $var; //用来判断对象是否创建成功的成员属性
function __construct($value=0){ //通过构造方法的传值决定抛出的异常
switch($value){ //对传入的值进行选择性的判断
case 1: //掺入参数1,则抛出自定义的异常对象
throw new MyException("传入的值“1”是一个无效的参数",5);
break;
case 2: //传入参数2,则抛出PHP内置的异常对象
throw new MyException("传入的值“2”不允许作为一个参数",6);
break;
default: //传入参数合法,则不抛出异常
$this->var=$value;
break; //为对象中的成员属性赋值
}
}
} //示例1,在没有异常时,程序正常执行,try中的代码全部执行并不会执行任何catch区块
//try{
// $testObj =new TestException(); //使用默认参数创建异常的擦拭类对象
// echo "********<br>"; //没有抛出异常这条语句就会正常执行
//}catch(MyException $e){ //捕获用户自定义的异常区块
// echo "捕获自定义的异常:$e<br>"; //按自定义的方式输出异常消息
// $e->customFunction(); //可以调用自定义的异常处理方法
//}catch(Exception $e){ //捕获PHP内置的异常处理类的对象
// echo "捕获默认的异常:".$e->getMessage()."<br>"; //输出异常消息
//}
//var_dump($testObj); //判断对象是否创建成功,如果没有任何异常,则创建成功 //示例2,抛出自定义的异常,并通过自定义的异常处理类捕获这个异常并处理
//try{
// $testObj1 =new TestException(1); //传1时,抛出自定义异常
// echo "********<br>"; //这个语句不会被执行
//}
//catch(MyException $e){ //这个catch区块中的代码将被执行
// echo "捕获自定义的异常:$e<br>";
// $e->customFunction();
//}
//catch(Exception $e){ //这个catch区块不会执行
// echo "捕获默认的异常:".$e->getMessage()."<br>";
//}
//var_dump($testObj1); //有异常产生,这个对象没有创建成功
//
////示例2,抛出自内置的异常,并通过自定义的异常处理类捕获这个异常并处理
//try{
// $testObj2 =new TestException(2); //传入2时,抛出内置异常
// echo "********<br>"; //这个语句不会被执行
//}catch(MyException $e){ //这个catch区块中的代码将被执行
// echo "捕获自定义的异常:$e<br>";
// $e->customFunction();
//}catch(Exception $e){ //这个catch区块不会执行
// echo "捕获默认的异常:".$e->getMessage()."<br>";
//}
//var_dump($testObj2); //有异常产生,这个对象没有创建成功

php 学习try_catch测试抛出异常的更多相关文章

  1. Javascript学习-简单测试环境

    Javascript学习-简单测试环境 在<JavaScript忍者秘籍>2.4测试条件基础知识中,作者给出了一个精简版的assert和assert组的实现,对于初学者而言,这无疑是一个很 ...

  2. 测试开发:从0到1学习如何测试API网关

    本文来自我的一名学员分享 日常工作中,难免会遇到临危受命的情况,虽然没有这么夸张,但是也可能会接到一个陌生的任务,也许只是对这个概念有所耳闻.也许这个时候会感到一丝的焦虑,生怕没法完成领导交给的测试任 ...

  3. 云笔记项目-Spring事务学习_测试准备

    在做云笔记项目的过程中,顺便简单的学习了Spring的事务概念,业务以如果添加笔记,则增加用户星星数目作为例子,引入了事务的概念.类似注册送积分之类的,云笔记项目以增加笔记就送星星来说明事务.具体在添 ...

  4. 基于GCC的openMP学习与测试(2)

    一.openMP简单测试 1.简单测试(1) #include<omp.h> #include<time.h> #include<iostream> using n ...

  5. 基于GCC的openMP学习与测试

    (一).openMP简述 Open Multiprocessing (OpenMP) 框架是一种功能极为强大的规范,可以帮助您利用 C.C++ 和 Fortran 应用程序中的多个核心带来的好处,是基 ...

  6. MySQL数据库Inception工具学习与测试 笔记

    MySQL语句的审核,在业界都已经基本被认同了,实际上也是对MySQL语句写法的统一化,标准化,而之前的人工审核,针对标准这个问题其实是很吃力的,标准越多,DBA越累,开发也越累. 那么在这个都追求自 ...

  7. 音视频 学习&开发&测试 资源

    一.FFmpeg 学习 1. 官方API文档 FFmpeg Documentation:http://www.ffmpeg.org/doxygen/trunk/index.html 2. 优秀开源项目 ...

  8. Modbus tcp 格式说明 通讯机制 附C#测试工具用于学习,测试

    前言: 之前的博客介绍了如何用C#来读写modbus tcp服务器的数据,文章:http://www.cnblogs.com/dathlin/p/7885368.html 当然也有如何创建一个服务器文 ...

  9. python学习(十一)测试和调试

    最近学习了python的错误处理和几种测试方法 1 try except 可以通过try except方式捕捉异常 try: print('try...') r = 10/0 print('resul ...

随机推荐

  1. macvtap介绍

    macvtap介绍 传统的linux网络虚拟化技术采用的是tap+bridge方式,将虚拟机连接到虚拟的tap网卡,然后将tap网卡加入到bridge.bridge相当于用软件实现的交换机,这种解决方 ...

  2. 【BZOJ1494】【NOI2007】生成树计数(动态规划,矩阵快速幂)

    [BZOJ1494][NOI2007]生成树计数(动态规划,矩阵快速幂) 题面 Description 最近,小栋在无向连通图的生成树个数计算方面有了惊人的进展,他发现: ·n个结点的环的生成树个数为 ...

  3. 【CodeChef】Chef and Graph Queries

    Portal --> CC Chef and Graph Queries Solution 快乐数据结构题(然而好像有十分优秀的莫队+可撤销并查集搞法qwq) 首先考虑一种方式来方便一点地..计 ...

  4. 专题训练之区间DP

    例题:以下例题部分的内容来自https://blog.csdn.net/my_sunshine26/article/details/77141398 一.石子合并问题 1.(NYOJ737)http: ...

  5. Oracle10g数据泵impdp参数详解--摘自网络

    Oracle10g数据泵impdp参数详解 2011-6-30 12:29:05 导入命令Impdp •      ATTACH 连接到现有作业, 例如 ATTACH [=作业名]. •      C ...

  6. poj1850 Code

    Code Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 10059   Accepted: 4816 Description ...

  7. 洛谷P3048 [USACO12FEB]牛的IDCow IDs

    P3048 [USACO12FEB]牛的IDCow IDs 12通过 67提交 题目提供者lin_toto 标签USACO2012 难度普及/提高- 时空限制1s / 128MB 提交  讨论  题解 ...

  8. 协程-遇到I/O自动切换

    参考博客:http://www.cnblogs.com/alex3714/articles/5248247.html 一.前言 Gevent 是一个第三方库,可以轻松通过gevent实现并发同步或异步 ...

  9. windows下MySQL 5.7+ 解压缩版安装配置方法--转载

    方法来自伟大的互联网. 1.去官网下载https://dev.mysql.com/downloads/mysql/.zip格式的MySQL Server的压缩包,根据需要选择x86或x64版.注意:下 ...

  10. 前端PHP入门-006-表达式和运算符

    算术运算 概念 算数运算符,就是大家小学所学绝大多数知识: 符号 描述 示例 + 加号 x+" role="presentation" style="posit ...