用户友好的php try-catch
因为很短的一段时间内,我正在使用PHP中的Try-Catch。现在,每次抛出一个新错误,屏幕上就会出现一个致命错误,这对用户来说并不友好,所以我想知道是否有一种方法可以给用户一个像回声一样的好消息,而不是致命错误 这是我现在拥有的代码:用户友好的php try-catch,php,try-catch,Php,Try Catch,因为很短的一段时间内,我正在使用PHP中的Try-Catch。现在,每次抛出一个新错误,屏幕上就会出现一个致命错误,这对用户来说并不友好,所以我想知道是否有一种方法可以给用户一个像回声一样的好消息,而不是致命错误 这是我现在拥有的代码: public static function forceNumber($int){ if(is_numeric($int)){ return $int; } else { throw new TypeEnforcerExc
public static function forceNumber($int){
if(is_numeric($int)){
return $int;
} else {
throw new TypeEnforcerException($int.' must be a number');
}
}
public function setStatus($status) {
try {
$this->status = TypeEnforcer::forceInt($status);
} catch (TypeEnforcerException $e) {
throw new Exception($e->getMessage());
} catch (Exception $e) {
throw new Exception($e->getMessage());
}
}
最好使用能够捕获所有未锁定异常的前端控制器来解决此问题:
<?php
require('bootstrap.php');
try {
$controllerService->execute($request);
} catch (Exception $e) {
$controllerService->handleControllerException($e);
}
这实际上会强制使用整数。如果无法执行强制转换,例如$int,则完全不兼容的PHP将为您抛出异常
这个例子有点冒进,因为根据方法的名称,您使用它来验证某个数字,并提供一个错误(如果不是错误的话)以及一个异常。相反,您应该进行一些验证。如果您希望输入错误,那么当提供错误输入时,这不是一种例外情况,因此我不会为此使用异常。这最好使用能够捕获所有未锁定异常的前端控制器来解决:
<?php
require('bootstrap.php');
try {
$controllerService->execute($request);
} catch (Exception $e) {
$controllerService->handleControllerException($e);
}
这实际上会强制使用整数。如果无法执行强制转换,例如$int,则完全不兼容的PHP将为您抛出异常
这个例子有点冒进,因为根据方法的名称,您使用它来验证某个数字,并提供一个错误(如果不是错误的话)以及一个异常。相反,您应该进行一些验证。如果您期望错误的输入,那么当提供错误的输入时,这不是一个例外情况,因此我不会为此使用异常。如果没有办法,那么就没有try-catch块的意义。这就是它的实际用途。您可能会解释如何…?是的,共享一些您已经尝试过的代码。但是,如果您有语法错误生成致命错误,那么这与异常处理无关。您的代码甚至不会执行。所以这些问题需要首先解决,是的,你可以禁用屏幕上的错误显示,并将其记录在背景中。我真的不明白你的意思。try-catch的用途是,一旦try失败,它就会停止异常,因此用户必须看到他做错了什么,例如,状态可能只包含一个数字,如果他们填写字符串,则必须告知。如果没有办法,那么try-catch块就没有意义。这就是它的实际用途。您可能会解释如何…?是的,共享一些您已经尝试过的代码。但是,如果您有语法错误生成致命错误,那么这与异常处理无关。您的代码甚至不会执行。所以这些问题需要首先解决,是的,你可以禁用屏幕上的错误显示,并将其记录在背景中。我真的不明白你的意思。try-catch的用途是,一旦try失败,它就会停止异常,因此用户必须看到他做错了什么,例如,如果他们填写了一个字符串,那么状态可能只包含一个数字,必须告知。我还想对发送给用户的正常错误消息使用异常是。他们必须知道自己做错了什么,如果我有一个名字字段,他们填写的太长,太短,等等,那么他们必须得到一条消息,名字是短/长。我认为也可以使用例外来解决这个问题。@NickAudenaerde:这不是例外。这是一些验证层返回的消息,以便您可以将消息放入输出中。这通常是在某个请求/表单验证层中完成的。在较低级别的函数中,如果需要,则抛出真正的异常。请记住,一个请求可能有多条错误消息,但只有一个异常。@NickAudenaerde我不确定这就是异常设计的原因。@NickAudenaerde:我还更新了答案,向您展示了我通常在PHP的低级函数中使用的强制转换。@hakre,当第一行抛出异常时,您的模型不是失败了吗?我想将异常也用于发送给用户的正常错误消息是的。他们必须知道自己做错了什么,如果我有一个名字字段,他们填写的太长,太短,等等,那么他们必须得到一条消息,名字是短/长。我认为也可以使用例外来解决这个问题。@NickAudenaerde:这不是例外。这是一些验证层返回的消息,以便您可以将消息放入输出中。这通常是在某个请求/表单验证层中完成的。在较低级别的函数中,如果需要,则抛出真正的异常。请记住,一个请求可能有多条错误消息,但只有一个异常。@NickAudenaerde我不确定这就是异常设计的原因。@NickAudenaerde:我还更新了答案,向您展示了我通常在PHP的低级函数中使用的强制转换。@hakre,当第一行抛出异常时,您的模型不是失败了吗?