无法在Laravel控制器中使用socket_connect捕获PHPException

无法在Laravel控制器中使用socket_connect捕获PHPException,php,laravel,Php,Laravel,我试图通过try-catch块忽略一个PHP错误,但它似乎不起作用?我在拉威尔的控制器里使用它 试试看{ 如果(!self::isEmulatorOnline()){ 返回; } $MUSdata=$command.chr(1)。$data; $socket=\socket\u create(AF\u INET、SOCK\u STREAM、getprotobyname('tcp'); $connect\u timeval=数组( “秒”=>0, “usec”=>100 ); \插座设置选项( $

我试图通过try-catch块忽略一个PHP错误,但它似乎不起作用?我在拉威尔的控制器里使用它

试试看{
如果(!self::isEmulatorOnline()){
返回;
}
$MUSdata=$command.chr(1)。$data;
$socket=\socket\u create(AF\u INET、SOCK\u STREAM、getprotobyname('tcp');
$connect\u timeval=数组(
“秒”=>0,
“usec”=>100
);
\插座设置选项(
$socket,
SOL_插座,
所以呢,嗯,嗯,,
$connect\u 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);
}
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'));

您试图捕获错误的异常
socket\u connect()
抛出一个
ErrorException
而不是
phpeexception
。您还可以只指定
异常
类来捕获所有

如果希望捕获多个异常类以进行不同的处理,还可以添加多个catch块

例如:

try {
    //
} catch (ErrorException $ex) {
    // here you go.
}

在laravel中,您可以捕捉到这样的错误。 尝试记录这个

try {
 //
} catch (\Exception $e) {
 // catch error message
 Log::info($e->getMessage());

// get http error code
 Log::info($e->getCode());
}

谢谢,我原以为PHPException是所有其他异常的父项,但显然我错了,谢谢。
catch(\Exception$ex){…}
可以用于捕获Laravel的任何异常,或者如果需要针对特定异常执行特定操作,可以添加多个
catch()
块。