Jas*_*vis 4 php exception-handling
我承认我不使用Exceptions很多并且他们很难在PHP中抓住100%,这可能部分是因为PHP没有最好的错误=> Exceptions支持但是我不太了解关于他们.
以下面的代码为例,它定义了4个不同的Classes,除了扩展一个基本的Exception类之外什么都不做.我只是好奇为什么不会只调用一个Exception以及为什么他们拥有所有这些单独的类.
我认为有充分的理由吗?
class OptimizeImageException extends Exception {};
class FileNotFoundException extends OptimizeImageException {};
class FileNotImageException extends OptimizeImageException {};
class ModuleNotFoundException extends OptimizeImageException {};
Run Code Online (Sandbox Code Playgroud)
通过拥有多个Exception类,您可以在捕获它们时选择您感兴趣的那个.
<?php
class OptimizeImageException extends Exception {};
class FileNotFoundException extends OptimizeImageException {};
class FileNotImageException extends OptimizeImageException {};
class ModuleNotFoundException extends OptimizeImageException {};
try {
throw new FileNotImageException();
} catch (FileNotFoundException $x) {
echo "NOT FOUND!";
// do something about it
} catch (FileNotImageException $x) {
echo "NOT IMAGE!";
// do something about it
} catch (Exception $x) {
echo "UNKNOWN EXCEPTION!";
// do something else about it
}
Run Code Online (Sandbox Code Playgroud)
这是一个简单的例子,但是假设你有一个loadImage()应该加载图像的函数.如果函数失败,您可以以不同方式处理不同的故障情况.如果你总是扔一个基本的Exception,你只会知道出了什么问题.您不知道出了什么问题,因此您不能根据不同的方案获得不同的恢复响应,而不是使用其他机制(这使得异常相当弱).
| 归档时间: |
|
| 查看次数: |
491 次 |
| 最近记录: |