Forum und email

Τελεστές Ελέγχου Λαθών

Η PHP υποστηρίζει έναν τελεστή ελέγχου λαθών: το σύμβολο (@). Όταν προηγείται σε μια έκφραση στην PHP, οποιοδήποτε μήνυμα λάθους που ίσως δημιουργηθεί από αυτή την έκφραση θα αγνοηθεί.

Αν το χαρακτηριστικό των track_errors έχει ενεργοποιηθεί, οποιοδήποτε μήνυμα λάθους που θα δημιουργηθεί από την έκφραση θα αποθηκευτεί στη μεταβλητή $php_errormsg. Αυτή η μεταβλητή θα αλλάζει ανάλογα με κάθε λάθος, συνεπώς θα πρέπει να την ελέγχετε συχνά αν θέλετε να τη χρησιμοποιείτε.

<?php
/* Intentional file error */
$my_file = @file ('non_existent_file') or
    die (
"Failed opening file: error was '$php_errormsg'");

// this works for any expression, not just functions:
$value = @$cache[$key]; 
// will not issue a notice if the index $key doesn't exist.

?>

Note: Ο τελεστής @ δουλεύει μόνο στις εκφράσεις. Ένας απλός κανόνας είναι ο εξής: αν μπορείτε να πάρετε την τιμή από κάτι, μπορείτε να βάλετε ως πρόθεμα σ'αυτό, το @. Για παράδειγμα, μπορείτε να το προσθέσετε στις μεταβλητές, στις συναρτήσεις και στις κλήσεις του include() , στις σταθερές κ.ο.κ. Δεν μπορείτε να το προσθέσετε στους ορισμούς συναρτήσεων ή κλάσεων, ή υποθετικών δομών όπως τις if και foreach κ.ο.κ.

Δείτε επίσης την error_reporting() και το τμήμα του εγχειριδίου Συναρτήσεις ελέγχου λαθών και σύνδεσης.

Note: Το πρόθεμα του τελεστή ελέγχου λαθών "@" δε θα αποτρέψει την εμφάνιση των μηνυμάτων που είναι αποτέλεσμα από λάθη μεταγλώττισης.

Warning

Προς το παρόν, το πρόθεμα ελέγχου λαθών "@" θα αποτρέψει ακόμη και την αναφορά λαθών για κρίσιμα λάθη που θα τερματίσουν την εκτέλεση του κώδικα. Ανάμεσα σε άλλα, αυτό σημαίνει ότι αν χρησιμοποιείτε το "@" για να εξαφανίσετε τα λάθη από μια συγκεκριμένη συνάρτηση τότε αν δεν είναι διαθέσιμο ή δεν έχει γραφεί σωστά, το script θα σταματήσει αμέσως εκεί χωρίς κάποια ένδειξη για την αιτία.