Php:例外:什么?(即:何时使用和何时不使用…)
我的问题是关于PhpPhp:例外:什么?(即:何时使用和何时不使用…),php,exception,Php,Exception,我的问题是关于Php异常的正确用法 我的Php应用程序是一个API服务器。 我的代码库非常清晰,嵌套调用的深度为5-6级。 当然,异常是处理错误的非常方便的方法, 由于您不必在函数调用的每个级别上处理所有错误条件 为了更好地解释我的意思,我在下面举个例子 这是我的顶层代码(“路由器”)的简化摘录: 这是我的底层代码(“db”)的简化摘录: 我认为这是一个典型且有效的有用异常处理示例:在代码库底层的致命错误上,错误会自动弹出到主错误处理函数。这里真正的优势是我不必在整个函数代码链中处理错误条件,从
异常的正确用法
我的Php应用程序是一个API服务器。
我的代码库非常清晰,嵌套调用的深度为5-6级。
当然,异常是处理错误的非常方便的方法,
由于您不必在函数调用的每个级别上处理所有错误条件
为了更好地解释我的意思,我在下面举个例子
这是我的顶层代码(“路由器”)的简化摘录:
这是我的底层代码(“db”)的简化摘录:
我认为这是一个典型且有效的有用异常处理示例:在代码库底层的致命错误上,错误会自动弹出到主错误处理函数。这里真正的优势是我不必在整个函数代码链中处理错误条件,从路由器级到数据库级
<>但是,如果我应该在我的函数栈中间更广泛地使用异常呢?例如:
class PersonsController {
...
public function sync() {
if (!mkdir($d, 0777)) {
throw new Exception("Can't create folder $d");
}
}
...
}
class PersonsController {
...
public function sync() {
if (!mkdir($d, 0777)) {dir: DEBUG ONLY!
return -1; # this error code will have to be handled upper in the stack...
}
}
...
}
而不是,例如:
class PersonsController {
...
public function sync() {
if (!mkdir($d, 0777)) {
throw new Exception("Can't create folder $d");
}
}
...
}
class PersonsController {
...
public function sync() {
if (!mkdir($d, 0777)) {dir: DEBUG ONLY!
return -1; # this error code will have to be handled upper in the stack...
}
}
...
}
问题是:在Php非平凡项目中使用异常的范围有多广?
异常的使用没有限制。我会在sync()
嵌套深度中抛出一个异常,这通常是更喜欢和广泛使用异常的充分理由。否则,这有点像一个参考/意见问题。(例外情况主要针对几乎致命的问题,最好是在有远程可行性的情况下使用它们来实现可恢复性,但不应被误用于普通信号或开发时断言。)