搜索
首页php教程php手册具有新特性的PHP5之异常处理机制
具有新特性的PHP5之异常处理机制Jun 13, 2016 am 10:30 AM
phpphp5主流处理开发异常机制语言错误


  php(做为现在的主流开发语言)5之前的错误处理
  在php(做为现在的主流开发语言)5之前的程序错误处理多使用以下三种办法:
  1.使用trigger_error()或die()函数来生成一个脚本层次的警告(warning)或致命错误(fatal error);
  
  2.在类方法或函数中返回一个错误标记(如false),也可能设置一个之后可以检查的属性或全局变量(如$error),然后在适合的地方检验其值再决定是否继续执行程序(如if($error==1){});
  
  3.使用PEAR处理错误;
  
  (一)使用die()或trigger_error()
  你可以使用die()函数来结束程序运行。以下是一个简单的类,它尝试从一个目录中加载一个类文件。
   代码列表 index.php(做为现在的主流开发语言) ?>
  
  (做为现在的主流开发语言)
  // php(做为现在的主流开发语言) 4
  require_once(cmd_php(做为现在的主流开发语言)4/Command.php(做为现在的主流开发语言));
  class CommandManager {
  var $cmdDir = "cmd_php(做为现在的主流开发语言)4";
  
  function getCommandObject($cmd) {
  $path = "{$this->cmdDir}/{$cmd}.php(做为现在的主流开发语言)";
  if (!file_exists($path)) {
  die("Cannot find $path ");
  }
  require_once $path;
  
  if (!class_exists($cmd)) {
  die("class $cmd does not exist");
  }
  
  $ret = new $cmd();
  if (!is_a($ret, Command)) {
  die("$cmd is not a Command");
  }
  return $ret;
  }
  }
  ?>
  
  这是一个用php(做为现在的主流开发语言)实现“Command Pattern设计模式”的简单例子(请参看《Java与模式》)。使用这个类的程序员(客户程序员client coder)可以将一个类放到目录中(例中为cmd_php(做为现在的主流开发语言)4目录)。一旦文件和其中包含的类同名,并且这个类是Command类的子类,我们的类方法将生成一个可用的Command对象。Command类中定义了一个 execute()方法用来执行找到的命令,即 getCommandObject()方法返回的对象将执行execute().
  
  我们再看看父类Command类,我们将它存在cmd_php(做为现在的主流开发语言)4/Command.php(做为现在的主流开发语言)文件中。
  
   代码列表cmd_php(做为现在的主流开发语言)4/Command.php(做为现在的主流开发语言) ?>
  
  (做为现在的主流开发语言)
  // php(做为现在的主流开发语言) 4
  class Command {
  function execute() {
  die("Command::execute() is an abstract method");
  }
  }
  ?>
  
  你可以看到,Command是php(做为现在的主流开发语言)4中抽象类的实现,我们无法直接将其实例化,而必须先从中派生中子类然后再实例化。当我们使用php(做为现在的主流开发语言)5后,我们可以使用更好的方式—使用abstract关键字将类和方法声明为“抽象”:
  
   代码列表 ?>
  
  (做为现在的主流开发语言)
  // php(做为现在的主流开发语言) 5
  abstract class Command {
  abstract function execute();
  }
  ?>
  
  
  下面是对上面的抽象类的实现,覆写了execute()方法,在其中加入真正可以执行的内容。这个类命名为realcommand,可以在cmd_php(做为现在的主流开发语言)4/realcommand.php(做为现在的主流开发语言)文件中找到。
  
   代码列表 cmd_php(做为现在的主流开发语言)4/realcommand.php(做为现在的主流开发语言) ?>
  
  (做为现在的主流开发语言)
  // php(做为现在的主流开发语言) 4
  require_once Command.php(做为现在的主流开发语言);
  class realcommand extends Command {
  function execute() {
  print "realcommand::execute() executing as ordered sah! ";
  }
  }
  ?>
  
  使用这样的结构可以使代码变得很灵活。你可以在任何时候增加新的Command类,而不需要改变外围的框架。但是你不得不注意一些潜在的中止脚本执行的因素。我们需要确保类文件存在,并且在文件中该类存在,并且该类是Command的子类(就像realcommand一样)。
  
  在例子中,如果我们尝试寻找类的操作失败,脚本执行将会中止,这体现了代码的安全性。但这段代码不灵活,没有足够的弹性。极端的反映是类方法只能进行积极正面的操作,它只负责找出和实例化一个Command对象。它无法处理更大范围内脚本执行的错误(当然它也不应该负责处理错误,如果我们给某个类方法加上太多与周边代码的关联,那么这个类的重用将会变得困难,不易扩展)。

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
php5和php8有什么区别php5和php8有什么区别Sep 25, 2023 pm 01:34 PM

php5和php8的区别在性能、语言结构、类型系统、错误处理、异步编程、标准库函数和安全性等方面。详细介绍:1、性能提升,PHP8相对于PHP5来说在性能方面有了巨大的提升,PHP8引入了JIT编译器,可以对一些高频执行的代码进行编译和优化,从而提高运行速度;2、语言结构改进,PHP8引入了一些新的语言结构和功能,PHP8支持命名参数,允许开发者通过参数名而不是参数顺序等等。

Java中的IOException异常常见原因是什么?Java中的IOException异常常见原因是什么?Jun 25, 2023 am 11:22 AM

在Java编程中,IOException异常是一个经常出现的异常类型。它在处理文件和网络连接等I/O操作时经常出现。本文将探讨Java中IOException异常的常见原因和解决方法。文件不存在或无法读取文件最常见的IOException异常是当试图打开一个不存在的文件或没有权限读取文件时抛出的异常。当我们使用FileInputStream或FileRead

Java中的NoSuchFieldError异常常见原因是什么?Java中的NoSuchFieldError异常常见原因是什么?Jun 24, 2023 pm 09:00 PM

Java中的NoSuchFieldError异常常见原因是什么?Java是一种跨平台的面向对象编程语言,多用于开发企业级应用程序和移动应用程序等。在Java程序开发中,NullPointerException、IndexOutOfBoundsException、ClassCastException等异常经常会出现,而NoSuchFieldError异常也是比

Java中的ClassCastException异常常见原因是什么?Java中的ClassCastException异常常见原因是什么?Jun 25, 2023 am 10:37 AM

Java中的ClassCastException异常常见原因是什么?Java语言中,ClassCastException异常是一种运行时异常,它发生在Java程序在运行时试图将一个对象强制转换为不兼容的数据类型时。在这种情况下,编译器将无法提前检查出类型不兼容的错误,而是在程序运行时抛出异常。在Java中,ClassCastException异常通常发生在以

Java中的StackOverflowError异常常见原因是什么?Java中的StackOverflowError异常常见原因是什么?Jun 25, 2023 am 08:19 AM

Java中的StackOverflowError异常常见原因是什么?在使用Java编程时,如果程序出现了StackOverflowError异常,那么程序将会崩溃,并且输出错误信息。那么什么是StackOverflowError异常,这种异常一般发生在哪些情况下呢?今天我们就来了解一下关于Java中StackOverflowError异常的常见原因。一、什么

Java中的UnsupportedClassVersionError异常的解决方法Java中的UnsupportedClassVersionError异常的解决方法Jun 25, 2023 pm 02:03 PM

Java是一种高级编程语言,广泛使用于企业级应用程序的开发和部署。但是,在Java开发和部署过程中,可能会遇到一些异常情况,其中之一就是UnsupportedClassVersionError异常。本文将详细解释UnsupportedClassVersionError异常的原因,并介绍如何解决这个问题。一、UnsupportedClassVersionErr

Java中的SecurityException异常在什么场景下出现?Java中的SecurityException异常在什么场景下出现?Jun 25, 2023 pm 02:36 PM

Java中的SecurityException异常是一种常见的异常类型,它通常出现在Java应用程序安全方面的处理中。这个异常通常指的是安全管理器出现问题,或者应用程序试图访问受保护的资源而未被授权的情况。本文将探讨Java中的SecurityException异常在哪些场景下会出现,以及如何在应用程序中避免这种异常的发生。首先,Java中的Security

Java中的FileNotFoundException异常常见原因是什么?Java中的FileNotFoundException异常常见原因是什么?Jun 25, 2023 am 09:37 AM

Java中的FileNotFoundException异常常见原因是什么?在Java开发过程中,异常是难免出现的。其中FileNotFoundException是一种十分常见的异常,可能会给开发者带来不必要的麻烦和时间的浪费。本文将探讨FileNotFoundException异常的常见原因,以及如何避免和解决它。一、FileNotFoundExceptio

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!