gpt4 book ai didi

php - 子类异常

转载 作者:行者123 更新时间:2023-12-02 06:43:52 26 4
gpt4 key购买 nike

我们都同意为不同的任务使用不同的异常类型是可行的方法。

但是,我们最终会像这样创建 ghost 文件:

/**
* Zend Framework
*
* LICENSE
*
* This source file is subject to the new BSD license that is bundled
* with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://framework.zend.com/license/new-bsd
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@zend.com so we can send you a copy immediately.
*
* @category Zend
* @package Zend_Dojo
* @subpackage View
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: Exception.php 20096 2010-01-06 02:05:09Z bkarwin $
*/

/**
* @see Zend_Dojo_Exception
*/
require_once 'Zend/Dojo/Exception.php';

/**
* @category Zend
* @package Zend_Dojo
* @subpackage View
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Dojo_View_Exception extends Zend_Dojo_Exception
{
}

然后对于 Zend_Dojo_ExceptionZend_Exception 都是一样的……

这个问题有什么通用的方法吗?

throw new\My\Just\Declared\Exception\(它扩展了\My\Just\Exception) 这样的东西,所以我不必打包并需要所有那些幽灵文件?

最佳答案

您似乎专注于这些是“幽灵”类的想法——没有实现或标记接口(interface)的类。坦率地说,您没有捕获重点。

在 ZF1 中,异常类只是组件级别的,该级别的所有异常都接收相同的异常类。这实际上只允许以下类型的捕获:

  • 全局级别(捕获“异常”)
  • 组件级(捕获组件级异常)

这只比简单地到处抛出“Exception”好一点点;您需要仔细检查异常消息以了解出了什么问题。

现在,去仔细阅读提案。

提案的要点是在捕获异常时允许额外的粒度级别:

  • 不关心它是什么异常?捕捉\异常。
  • 寻找来自特定组件的异常,但不关心除此之外的细节?捕获该组件的异常接口(interface)。
  • 想要查找特定类型的 SPL 异常?捕获那些(在 ZF2 中,异常类实现组件异常接口(interface),并扩展适当的 SPL 异常)。
  • 想在组件中捕获特定的异常类型?捕获它。

基本上,我们现在只在异常 TYPE 上允许更大的粒度;如果您正在尝试的操作可能抛出多个相同类型的异常,您只需要检查消息。通常情况下,情况并非如此。

SPL 异常在语义上相当丰富,ZF 中的许多异常最好归类为这些类型(例如,无效参数应引发 InvalidArgumentException;无法解析插件将是一个很好的 RuntimeException;等等)。对于 ZF1,这是不可能的——我们必须从组件级异常继承,句号。通过转移到标记接口(interface),我们既可以捕获组件级异常,也可以捕获 SPL 级异常,而且还可以捕获更具体的异常类型。

关于php - 子类异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3549836/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com