<?php
try
{
echo "比赛开始"."\n";
throw new Exception('哇呀呀~运动员摔倒了'."\n",);
}
catch (Exception $e )
{
echo "获取错误信息:".$e->getMessage()."\n";
echo "获取错误编码:".$e->getCode()."\n";
}
echo "哎呀比赛结束了"."\n";
?>

输出结果:

比赛开始
获取错误信息:哇呀呀~运动员摔倒了

  • 自定义异常类
<?php
//自定义异常
class MyException extends Exception #自定义异常类继承自异常基类
{
public function demo()
{
echo "快把运动员扶起来";
}
}
try{
echo "比赛开始"."\n";
throw new MyException("哎呀运动员摔倒了",);
}
catch(MyException $e)
{
echo $e->getCode()."\n";
echo $e->getMessage()."\n";
echo $e->demo()."\n";
}
echo "比赛结束"."\n";
?>

输出结果:

比赛开始

哎呀运动员摔倒了
快把运动员扶起来
比赛结束

  • 使用自定义myexception的重要原则
<?php

class myexception extends Exception
{
public function demo()
{
echo "快把运动员扶起来"."\n";
}
} try{
echo "比赛开始"."\n";
throw new myexception('运动员被绊了一跤',); #尽管抛出的是myexception,但是却被原生exception捕捉到了,所以自定义exception应该放在第一个!
}
catch (Exception $e)
{
echo $e->getMessage()."\n";
echo $e->getCode()."\n";
echo "上述是原生exception"."\n";
}
catch ( myexception $e)
{
echo $e->getMessage()."\n";
echo $e->getCode()."\n";
echo $e->demo()."\n";
echo "上述是自定义myexception"."\n";
}
?>

输出结果:

比赛开始
运动员被绊了一跤

上述是原生exception

正确姿势:

<?php

class myexception extends Exception
{
public function demo()
{
echo "快把运动员扶起来"."\n";
}
} try{
echo "比赛开始"."\n";
throw new myexception('运动员被绊了一跤',);
} catch ( myexception $e)
{
echo $e->getMessage()."\n";
echo $e->getCode()."\n";
echo $e->demo()."\n";
echo "上述是自定义myexception"."\n";
}
catch (Exception $e)
{
echo $e->getMessage()."\n";
echo $e->getCode()."\n";
echo "上述是原生exception"."\n";
} ?>

输出结果:

比赛开始
运动员被绊了一跤

快把运动员扶起来

上述是自定义myexception

  • 特别函数set_exception_handler
<?php
function heichouxianwaA($mywords)
{
echo $mywords->getMessage();
}
set_exception_handler('heichouxianwaA');
throw new Exception("我满心欢喜打开我的未来");
?>

php类知识---try catch的更多相关文章

  1. C++ DLL导出类 知识大全

    在公司使用C++ 做开发,公司的大拿搭了一个C++的跨平台开发框架.在C++开发领域我还是个新手,有很多知识要学,比如Dll库的开发. 参考了很多这方面的资料,对DLL有一个基本全面的了解.有一个问题 ...

  2. Java中Properties类知识的总结

    一.Properties类与配置文件 注意:是一个Map集合,该集合中的键值对都是字符串.该集合通常用于对键值对形式的配置文件进行操作. 配置文件:将软件中可变的部分数据可以定义到一个文件中,方便以后 ...

  3. java IO流之——File类知识总结和面试

    File类描述的是一个文件或文件夹.(文件夹也可以称为目录).该类的出现是对文件系统的中的文件以及文件夹进行对象的封装.可以通过对象的思想来操作文件以及文件夹.可以用面向对象的处理问题,通过该对象的方 ...

  4. C++类知识总结

    c++类 1.初始化const或引用类型数据成员的唯一机会是在构造函数初始化列表中. 2.使用成员初始化列表时成员初始化的次序:第一个成员首先被初始化.然后是第二个,依次类推. 构造函数初始化列表为类 ...

  5. php类知识 self $this都只能在当前类中使用

    $this是当前对象的指针,self是当前类的指针 $this只能用在成员方法中,不能存在于静态方法 self 静态方法和成员方法中都能使用 self可以访问类常量,静态属性,静态方法,成员方法--- ...

  6. PHP类知识----静态属性和方法

    <?php class mycoach { public $name="陈培昌"; CONST hisage =; ; private $favorite = "喜 ...

  7. php类知识---常量点滴

    常量在类的内部,外部都可以访问,要通过类名::常量名 常量没有访问修饰符 与变量不同的是,常量不能放在双引号中取值,而变量可以 <?phpclass mycoach{ public $name= ...

  8. php类知识----特别用法

    spl_autoload_register注册 <?php #spl_autoload_register-----这个例子是用来打印实例化类的类名 function thereisagameof ...

  9. php类知识---命名空间

    <?php #命名空间namespace用来解决类的命名冲突,和引用问题 namespace trainingplan1; class mycoach { public function tra ...

随机推荐

  1. sshpass和做软链接

    参考: https://help.aliyun.com/document_detail/54530.html?spm=5176.11065259.1996646101.searchclickresul ...

  2. OracleLinux6安装

    针对Oracle数据库安装的linux系统 1.首先要有oracle linux的镜像 链接:https://pan.baidu.com/s/1S3xYr4YNGtU-351bVaS1-Q 提取码:a ...

  3. 谈谈Java中的集合list、set、map之间的区别

    参考文献:https://www.cnblogs.com/IvesHe/p/6108933.html 我这里只总结其区别,具体的说明,请查看参考文献,讲的很详细. A.list接口,实现子类有:arr ...

  4. ARTS 第一周打卡

    Algorithm : 做一个 leetcode 的算法题 1.只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算 ...

  5. css多种方式实现等宽布局

    本文讲的等宽布局是在不手动设置元素宽度的情况下,使用纯css实现各个元素宽度都相当的效果. 1.使用table-cell实现(兼容ie8) <style> body,div{ margin ...

  6. spring boot 2.0 提示 No primary or default constructor found for interface Pageable 解决办法

    在SpringBoot 2.0 以前,我们会配置以下类 @Configuration public class WebMvcConfig extends WebMvcConfigurerAdapter ...

  7. 【spring Boot】spring boot1.5以上版本@ConfigurationProperties取消location注解后的替代方案

    前言 =========================================== 初步接触Spring Boot ===================================== ...

  8. C# Reflection exception Method not found

    C# Reflection exception Method not found Ok I figured it out. The server has Microsft .NET 4.0 insta ...

  9. Redis基本数据

    Redis Redis是一个速度非常快的非关系数据库(NoSql),它可以存储键(key)与五种不同的值(value)之间的映射.可以将存储的内存的键值对数据持久化到硬盘. Redis 数据结构 Re ...

  10. Eclipse 快捷键、文档注释、多行注释的快捷键

    关于快捷键 Eclipse 的很多操作都提供了快捷键功能,我们可以通过键盘就能很好的控制 Eclipse 各个功能: 一.多行注释快捷键 1.选中你要加注释的区域,用ctrl+shift+C 或者ct ...