如果我在array
条件之前返回SWITCH
,则可以正常工作,但是,如果尝试在SWITCH
条件之后返回某些值(即使是硬编码数组),则不会返回任何内容。同样,它不会出现在任何CASE
中,甚至不会出现在DEFAULT
中。甚至打印或回声也不起作用。
我的$e->getAwsErrorCode()
函数返回了InvalidSignatureException
,但没有进入相关的开关情况。
我检查了错误日志,页面上什么也没有,也没有错误或警告打印出来。
private function rekognition_error_catch($e)
{
$arr_error = array();
/*return [
'error_code' => 34,
'error_message' => 'Error'
];*/
switch ($e->getAwsErrorCode()) {
case 'InvalidParameterException':
$arr_error['error_code'] = 71;
$arr_error['error_message'] = $e->getAwsErrorMessage();
break;
case 'InvalidS3ObjectException':
$arr_error['error_code'] = 72;
$arr_error['error_message'] = $e->getAwsErrorMessage();
break;
case 'ImageTooLargeException':
$arr_error['error_code'] = 73;
$arr_error['error_message'] = $e->getAwsErrorMessage();
break;
case 'AccessDeniedException':
$arr_error['error_code'] = 74;
$arr_error['error_message'] = $e->getAwsErrorMessage();
break;
case 'InternalServerError':
$arr_error['error_code'] = 75;
$arr_error['error_message'] = $e->getAwsErrorMessage();
break;
case 'ThrottlingException':
$arr_error['error_code'] = 76;
$arr_error['error_message'] = $e->getAwsErrorMessage();
break;
case 'ProvisionedThroughputExceededException':
$arr_error['error_code'] = 77;
$arr_error['error_message'] = $e->getAwsErrorMessage();
break;
case 'InvalidImageFormatException':
$arr_error['error_code'] = 78;
$arr_error['error_message'] = $e->getAwsErrorMessage();
break;
case 'InvalidSignatureException':
$arr_error['error_code'] = 79;
$arr_error['error_message'] = $e->getAwsErrorMessage();
echo '1';
print_r($arr_error);
break;
default:
//throw new Exception($e->getAwsErrorMessage(),80);
$arr_error['error_code'] = 80;
$arr_error['error_message'] = $e->getAwsErrorMessage();
}
echo '2';
print_r($arr_error);
return [
'error_code' => 34,
'error_message' => 'Error'
];
}
答案 0 :(得分:-1)
您的案例设置了$arr_array
,但从未在任何地方返回,您总是返回默认值[ 'error_code' => 34, 'error_message' => 'Error' ]
,因此,您需要检查该数组中的值是否已设置,所以;
if (!empty($arr_error['error_code']))
{
return $arr_error;
}
return [
'error_code' => 34,
'error_message' => 'Error'
];
上面的代码检查是否在$arr_error
中设置了错误代码,如果已设置,将使用此代码,否则,将返回默认的34
错误
请注意,您将$e->getAwsErrorMessage()
称为很多,将其存储起来会使其更加简单,例如;
$arr_error = array();
$err_message = $e->getAwsErrorCode();
switch ($err_message) {
case 'InvalidParameterException':
$arr_error['error_code'] = 71;
$arr_error['error_message'] = $err_message;
break;
/* Your other code, just using $err_message instead of $e->getAwsErrorCode()
This will save some overhead from the function calls */
}
答案 1 :(得分:-2)
如果当时切换条件不返回任何值,则必须将默认条件置于切换条件中。默认值是在其他任何条件都不匹配时执行的条件。