Php 用户友好消息的方法错误处理

Php 用户友好消息的方法错误处理,php,exception-handling,Php,Exception Handling,我有一个面向对象的应用程序(在MVC框架中编写),我的错误处理过程通常是临时的。有时返回0表示无错误,有时返回atrue表示成功。一般来说,没有太多的一致性 我的场景是,我有一个控制器从我的模型中调用一个方法。如果该方法失败,我希望它返回一个可读的原因,解释为什么错误无法完成。此错误将传递给用户。例如,一个userDelete()方法。我只想知道用户是否被删除,如果没有,为什么 我以前的方法是在删除时返回true,否则返回字符串。这使得if语句有点棘手,因为 if ($output = $thi

我有一个面向对象的应用程序(在MVC框架中编写),我的错误处理过程通常是临时的。有时返回0表示无错误,有时返回a
true表示成功。一般来说,没有太多的一致性

我的场景是,我有一个控制器从我的模型中调用一个方法。如果该方法失败,我希望它返回一个可读的原因,解释为什么错误无法完成。此错误将传递给用户。例如,一个userDelete()方法。我只想知道用户是否被删除,如果没有,为什么

我以前的方法是在删除时返回
true
,否则返回字符串。这使得
if
语句有点棘手,因为

if ($output = $this->someMethod())
将为字符串返回true,因此这没有多大帮助

我对替代方案的考虑是:

返回一个数组 这将与上面显示的if语句兼容(即当返回数组时将返回“false”)。如果函数调用成功,我将返回
true

使用PHP的异常类和try/catch块 当代码出现错误时(即,执行检查以查看用户是否存在,结果是否定的)

然后在呼叫页面上我会写:

try {
   $this->someMethod();
} catch (Exception $e) {
   echo $e->getMessage() //Or some other way of handling the error
}
如果我继续使用这个替代方案,那是PHP中的“坏形式”吗?异常是否应仅用于实际编码错误(即除以0),而不是用于“更高级别”的应用程序错误处理/用户反馈


记住:我计划在执行过程中的某个时刻将这些错误消息发送回用户。。。我是否应该担心PHP本身引发的其他异常会返回给用户?我应该扩展Exception类来防止这种情况吗?

我个人使用类似于您的数组想法的东西,因为如果需要,我可以返回并存储该状态和所有其他有用的日志信息。如果一切顺利,我只返回一个空数组以保持一致性,因为If(someFunct())在成功时为true(如果我使用true作为成功),或者在非空数组上为true。这样我就等于空数组(!someFunc())成功了


但是,请随意查看我认为在这个主题上非常好的内容。

我个人使用类似于您的数组想法的东西,因为如果需要,我可以返回并存储该状态和所有其他有用的日志信息。如果一切顺利,我只返回一个空数组以保持一致性,因为If(someFunct())在成功时为true(如果我使用true作为成功),或者在非空数组上为true。这样我就等于空数组(!someFunc())成功了

不过,请随意看看我觉得对这个话题很有帮助的地方

if ($query->count == 0) {
   throw new Exception("User does not exist");
}
try {
   $this->someMethod();
} catch (Exception $e) {
   echo $e->getMessage() //Or some other way of handling the error
}