/**
* 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. 题解 P1200 【[USACO1.1]你的飞碟在这儿Your Ride Is He…】

    cin其中有很多小众的函数与其他重叠 不妨拿来用用(作死不止) 划重点!!! 1.cin.get(),相当于c里面的getchar(),可以往里面输入字符 2.cin.getline(),相当于str ...

  2. P4622 [COCI2012-2013#6] JEDAN

    题目背景 COCI 题目描述 有N个数排成一行(数值代表高度),最初所有的数都为零,你可以选择连续的一段等高的数,将它们都增加1(除了开头和结尾那个数)如下图表示了两次操作: 现在有一些数字看不清了, ...

  3. 常州day1p5

    给一个 n∗m 的矩阵,矩阵的每个格子上有一个不超过 30 的非负整数. 我们定义一条合法的路线是从(1,1)开始只能向右和向下移动到达(n,m)的路线. 定义数列 A1,A2,A3,..,An+m− ...

  4. linux内核设计与实现一书阅读整理 之第一二章整合

    第一章:Linux内核简介 一.Unix和linux Unix是一个强大.健壮和稳定的操作系统. 1.Unix内核特点 十分简洁:仅提供几百个系统调用并且有明确的目的: 在Unix中,大部分东西都被( ...

  5. miya--图片上传--搭建分布式文件服务器(FastDFS+Nginx)

    资料获取(FastDFS+Nginx): 链接:https://pan.baidu.com/s/1kUI5WH5 密码:kzfd 安装rz,sz功能: yum install lrzsz 主攻: 利用 ...

  6. Linux之选取信息命令介绍与应用20170331

    在介绍选取信息命令之前,说一下管道符“|”与tr命令,因为在使用多个命令一起的时候经常用到它. 一.利用Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入. ...

  7. 《JavaScript高级程序设计(第三版)》-3

    相等操作符 相等和不相等 在转换不同的数据类型时,相等和不想等操作符遵循下面基本规则: 如果有一个操作符数是布尔值,则在比较相等性之前先将其转换为数值——false转换为0,而true转换为1: 如果 ...

  8. python 字符串前缀u, r, b小结

    http://note.youdao.com/noteshare?id=a0da9c2d044d270fa8cb162b932c47e8

  9. 「Linux」VMware安装centos7(一)

    1.点击:创建虚拟机 2.选择:自定义(高级),下一步 3.点击:下一步 4.选择:稍后安装操作系统,下一步 5.选择:操作系统和对应的版本,下一步 6.设置:虚拟机名称和安装位置,下一步 7.设置: ...

  10. clinical significance临床显著性

    sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&a ...