我试图通过try catch块来忽略PHP错误,但它似乎并没有工作?我在Laravel的控制器中使用它。在Laravel控制器中无法捕获socket_connect的PHPException
try {
if (!self::isEmulatorOnline()) {
return;
}
$MUSdata = $command . chr(1) . $data;
$socket = \socket_create(AF_INET, SOCK_STREAM, getprotobyname('tcp'));
$connect_timeval = array(
"sec"=>0,
"usec" => 100
);
\socket_set_option(
$socket,
SOL_SOCKET,
SO_SNDTIMEO,
$connect_timeval
);
\socket_connect($socket, Config::get('frontend.client_host_ip'), Config::get('frontend.mus_host_port'));
\socket_send($socket, $MUSdata, strlen($MUSdata), MSG_DONTROUTE);
\socket_close($socket);
}
catch(\PHPException $exception) {}
正如你可以看到,我想沉默错误例外,我知道这是不宜,但其通过Ajax请求,我处理,如果客户端IP和端口不能使用不同的访问方法。
有谁知道为什么它会返回错误异常,即使使用try catch使其静音?
我得到的错误是
1/1) ErrorException
socket_connect(): unable to connect [10061]: No connection could be made because the target machine actively refused it.
在此行中:
\socket_connect($socket, Config::get('frontend.client_host_ip'), Config::get('frontend.mus_host_port'));
'赶上(\ $例外前){...}'可以用来捕捉任何Laravel的异常,也可以添加多个'赶上()'块,如果你需要的具体行动对于特定的例外。 –