Php 在我的webapp中存储异常?

Php 在我的webapp中存储异常?,php,exception,error-handling,directory-structure,Php,Exception,Error Handling,Directory Structure,直到最近,我一直按照如下所示创建并抛出自定义异常: 文件:Myclass.php: namespace myapp\libraries; class myclass { setEmail($email) { if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { throw new myClassException("Email not valid"); } } } cl

直到最近,我一直按照如下所示创建并抛出自定义异常:

文件:Myclass.php:

namespace myapp\libraries;

class myclass {

    setEmail($email) {
        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
             throw new myClassException("Email not valid");
        }
    }

}

class myClassException extends \Exception {}
好的,如果自定义异常总是存在于同一个文件中,并且是在抛出异常的类之后定义的,那么它工作良好,易于维护和构建

问:当前的PHP惯例和常识是怎么说的

以下是我可以考虑的解决方案:

在调用/抛出自定义异常的类之后立即声明自定义异常。 将所有自定义异常存储在一个名为customExceptions.php的共享文件中。 将所有自定义异常存储在一个单独的文件中,该文件以其异常名myClassException.php命名,位于名为/Exceptions的目录中。
单独存储所有类,一个类一个文件。类的名称应该是包含文件的名称,并且是逐字的,区分大小写。 使用供应商/应用程序/…-格式的名称空间我保证这是一件非常方便的事情。

我也想得到答案,但被接受的答案投了反对票,所以。。我认为大多数自定义异常属于抛出它们的类,一般异常属于单个文件。虽然这会产生很多文件。我们的大多数异常类都是空的,并且只在一个地方抛出,因此一个完整的文件似乎是浪费。在我被问到问题两年后,单文件+日志聚合器似乎是对我最好的选择。所有异常都是单文件?我的问题是,我们使用Symfony的应用程序的模块化结构被破坏了,每个模块在其他地方都会有依赖关系,我们不希望共享模块,但仍然会。对不起,我回答了我认为完全不同的问题。我考虑了我所做的,然后我们选择了子文件夹解决方案。这是最有意义的。对于快速和肮脏的东西,异常被放置在同一文件中主类的正下方。