/**
* 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. Android APK 反编译步骤

    dex2jar和jd-gui工具下载,链接:http://yun.baidu.com/share/link?shareid=2888715259&uk=1377615098 解压APK文件得到 ...

  2. ZOJ3899 State Reversing 【线段树 + NTT】

    题目链接 ZOJ3899 题解 比较累,做一道水题 还被卡常= = 我在\(ZOJ\)交过的两道\(NTT\)都被卡常了.. 哦,题意就是求第二类斯特林数,然后线段树维护一下集合数量就可以了 #inc ...

  3. apue.3e 的安装 (基于ubuntu12.0.4)

    本菜刚刚学习UNIX下高级编程,无奈搭建本书编程环境时遇到不少问题.幸好网上有各种大神的解决办法让我最终解决了问题.在这里感谢为LINUX开源操作系统奋斗的大神. 不过话说回来,网上大都是针对UNIX ...

  4. 公告:开通csdn博客,敬请关注!

    公告:开通csdn博客,敬请关注!地址:https://blog.csdn.net/cyjch

  5. move_base的 局部路径规划代码研究

    base_local_planner teb_local_planner parameter code g2o base_local_planner ROS wiki Given a plan to ...

  6. C++模板类注意事项

    最近使用C++模板,虽然工作几年了,但是模板用的很少,确切的说自己实现的机会很小. 昨天写了一个代码maxheap.h 中实现了类模板的声明,我将实现写在maxheap.cpp中, 当在main.cp ...

  7. jinja2 中的 Template 批量替换json字符串中的内容

    项目中用到elasticsearch,使用Json格式查询方式,一个查询语句中有好几个地方需要替换,且替换的值都相同.最开始把json转为字符串发方式,利用format函数处理,发现再转回json时无 ...

  8. linux shell学习一

    本博客参考自: http://www.cnblogs.com/waitig/p/5523409.html <shell从入门到精通>  张春晓编著 Shell简介 Shell自身是一个用C ...

  9. [DeeplearningAI笔记]卷积神经网络1.9-1.11池化层/卷积神经网络示例/优点

    4.1卷积神经网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.9池化层 优点 池化层可以缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性. 池化层操作 池化操作与卷积操作类似 ...

  10. JAVA 日期处理工具类 DateUtils

    package com.genlot.common.utils; import java.sql.Timestamp;import java.text.ParseException;import ja ...