2016-10-23 2 views
0

Ich möchte die Fehlermeldung in PHP erhalten, bevor es ausgeführt wird. Basicly bedeuten, was ich ist, dass wenn ich einen schlechten Code haben würde:Fehler erhalten, bevor sie die Fehlermeldung Funktion ausführen

// This code is incorrect, I want to receive the error before it gets handled! 
$some_var = new this_class_is_not_made; 

nun diese Klasse nicht existiert, so ist es Griffe durch die Standard-Fehlerbehandlung in PHP wäre. Aber ich möchte den normalen Fehlerhandler deaktivieren und meinen eigenen erstellen.

Ein weiteres Beispiel:

somefunction(string some_var); // some_var misses the variable prefix. ($) 

Beispiel Fehlermeldung:

Fatal error: function 'some_var' is not defined in line: $x!

Und dieser Fehler wäre: somefunction(string some_var);

Aber wie würde ich die Nachrichten empfangen, sondern auch die normale Fehlersystem deaktivieren ?

EDIT: Herstellung der Fehler System ausführen, um eine user-defined Funktion

// I would want the error system to execute a function like this: 
function(string $errorMessage, int $error_code){ 
    if($error_code < 253){ return "Fatal error"; } 
    if($error_code < 528 && $error_code > 253){ return "Warning"; } 
} 

Antwort gefunden: Von: ShiraNai7

try 
{ 
    // Code that may throw an Exception or Error. 
} 
catch (Throwable $t) 
{ 
    // Executed only in PHP 7, will not match in PHP 5 
} 
catch (Exception $e) 
{ 
    // Executed only in PHP 5, will not be reached in PHP 7 
} 

Antwort

0

In PHP 7.0.0 oder neuer wird der Code Error werfen Ausnahme, wenn this_class_is_not_made nicht existiert.

try { 
    $some_var = new this_class_is_not_made; 
} catch (Error $e) { 
    echo $e->getMessage(); 
} 

Beachten Sie, dass, dass dies auch alle anderen Error Ausnahmen im Falle fangen this_class_is_not_made existiert und verursacht einen anderen Fehler auf dem Weg.

In PHP-Versionen vor 7.0.0 haben Sie kein Glück - fatale Fehler beenden immer das Hauptskript.

Es könnte eine bessere Idee class_exists() stattdessen zu verwenden:

if (class_exists('this_class_is_not_made')) { 
    $some_var = new this_class_is_not_made; 
} 

Diese in allen PHP-Versionen funktionieren, die Klassen unterstützen.

+0

Das ist nicht das Problem, ich brauche nur den Fehler zu erhalten, und im mit PHP 7.0.3 –

+0

dann die try..catch verwenden oder 'set_exception_handler()' – ShiraNai7

+0

Ill es für den Fang in dem manuellen –

Verwandte Themen