/**
* 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. Argus UVALive - 3135(优先队列 水题一道)

    有一系列的事件,它每Period秒钟就会产生编号为qNum的事件,你的任务是模拟出前k个事件,如果多个事件同时发生,先处理qNum小的事件 今天再看看数据结构.. #include <iostr ...

  2. React Native工程中TSLint静态检查工具的探索之路

    建立的代码规范没人遵守,项目中遍地风格迥异的代码,你会不会抓狂? 通过测试用例的程序还会出现Bug,而原因仅仅是自己犯下的低级错误,你会不会抓狂? 某种代码写法存在问题导致崩溃时,只能全工程检查代码, ...

  3. 【bzoj2938】病毒

    Portal -->bzoj2938 Solution 这题的话..一开始想的是不是上一个trie就消失了但是后来发现好像我还是太年轻qwq 比较容易联想到..AC自动机,多串匹配嘛 然后就.. ...

  4. 玲珑杯”ACM比赛 Round #19 B 维护单调栈

    1149 - Buildings Time Limit:2s Memory Limit:128MByte Submissions:588Solved:151 DESCRIPTION There are ...

  5. MySQL语句查看各个数据库占用空间

    select table_schema, sum(DATA_LENGTH)+sum(INDEX_LENGTH) from information_schema.tables group by tabl ...

  6. eclipse插件大全(官方)

    eclipse插件大全:http://marketplace.eclipse.org/metrics/successful_installs 各个版本插件: http://download.eclip ...

  7. OpenCV---模板匹配matchTemplate

    作用有局限性,必须在指定的环境下,才能匹配成功,是受到很多因素的影响,所以有一定的适应性 模板匹配是一种最原始.最基本的模式识别方法,研究某一特定对象物的图案位于图像的什么地方,进而识别对象物,这就是 ...

  8. SQL基础操作

    SQL是操作数据的语言 增加记录: insert into 数据表名称(字段1,字段2,字段3....)values(值1,值2,值3.....) 查看表结构:desc 表名 inset into x ...

  9. React-music 全家桶项目

    React-Music 全家桶项目 一.简介 该项目是基于React全家桶开发的一个音乐播放器,技术栈采用:Webpack + React + React-redux + React-router + ...

  10. java用于控制可见性的4个访问修饰符

    仅对本类可见——private 对所有类可见——public 对本包的所有子类可见——protected 对本包可见——默认(很遗憾)不需要修饰符