【发布时间】:2012-01-09 01:36:27
【问题描述】:
我承认我并没有大量使用异常,而且它们有时让我难以 100% 掌握 PHP,这可能部分是因为 PHP 没有最好的错误 => 异常支持,但我还是这样做了对他们了解不多。
以下面的这段代码为例,它定义了 4 个不同的类,它们除了扩展一个基本的异常类之外什么都不做。我只是好奇为什么人们不只是调用一个异常以及为什么他们有所有这些单独的类。
我认为有充分的理由?
class OptimizeImageException extends Exception {};
class FileNotFoundException extends OptimizeImageException {};
class FileNotImageException extends OptimizeImageException {};
class ModuleNotFoundException extends OptimizeImageException {};
【问题讨论】:
-
特异性是我能想到的唯一理由;如果异常有名称,至少当它开始出现时您可能知道从哪里开始。
-
@Jared Farrish:“当它开始出现时”——你有异常跟踪并且知道它被抛出的确切位置,每个案例有或没有特定的类
-
@zerkms - 我不确定你同意还是不同意我的观点?
-
@Jared Farrish:我不同意你的观点:“如果异常有名字,至少当它开始出现时你可能知道从哪里开始”——你总能找到异常的位置来自甚至没有它的名字,因为每个异常都有堆栈跟踪
-
@zerkms - 也许我们将“从哪里开始”解释为不同。你的回答和我的意思差不多。这就是为什么我说“特异性”,这并不意味着“特定于行”(我个人认为这很奇怪)。