2017-08-23 2 views
0

Ich versuche, einen Fehler zu werfen, wenn der Socket aus irgendeinem Grund nicht ausgeführt werden kann.Abfangen und Fehler mit einer Ausnahme

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) OR throw new main_excp(error_pack(3050, 'Failed (socket_create): ' . socket_strerror(socket_last_error($socket)) .'!', true)); 

Allerdings funktioniert dies nicht so, wie ich einen Fehler bekomme.

Wenn ich OR die() verwende, wird das Skript direkt dort beendet, und ich kann den Fehler innerhalb nicht entsprechend verarbeiten.

Was ist der richtige Weg zu genau diesem?

+0

'throw' ist eine [Anweisung] (http://php.net/manual/en/language.exceptions.php), sie hat keinen Wert. Dementsprechend kann es nicht in Ausdrücken verwendet werden. Bleiben Sie weg von jedem Tutorial, das Ihnen beibringt, dass 'mysql_query() oder die()' Fehlerbehandlung ist. – axiac

Antwort

1

The PHP Manual sagt:

socket_create() einen Socket auf Erfolg zurück oder FALSE bei Fehler. Der aktuelle Fehlercode kann durch Aufruf von socket_last_error() abgerufen werden. Dieser Fehlercode kann an socket_strerror() übergeben werden, um eine textliche Erläuterung des Fehlers zu erhalten.

So können Sie $socket für einen falschen Wert überprüfen (mit $socket === false) und den Fehler, die Funktionen socket_last_error() und socket_sterror() verwenden.

Verwandte Themen