Η πρόταση try/catch/finally στο JavaScript

Ορισμός και χρήση

Η πρόταση try/catch/finally χειρίζεται μέρος ή όλο το σφάλμα ενός κώδικα, ενώ συνεχίζει την εκτέλεση του κώδικα.

Τα σφάλματα μπορεί να προκαλούνται από λάθη προγραμματιστή, λάθη εισαγωγής δεδομένων και άλλες μη αναμενόμενες καταστάσεις.

Η πρόταση try επιτρέπει τη δημιουργία ενός κώδικα που θα ελέγχεται για σφάλματα κατά την εκτέλεση.

Αν συμβεί σφάλμα στον κώδικα του try, η κρίση catch επιτρέπει την οριστική του εκτέλεση.

Η κρίση finally επιτρέπει την εκτέλεση κώδικα μετά το try και το catch, ανεξάρτητα από το αποτέλεσμα.

Σημείωση:Οι κρίσεις catch και finally είναι προαιρετικές, αλλά πρέπει να χρησιμοποιηθείς τουλάχιστον μια από αυτές όταν χρησιμοποιείς την κατοχή try (μην και οι δύο ταυτόχρονα).

Συμβουλή:Όταν συμβεί σφάλμα, το JavaScript συνήθως σταματά και δημιουργεί μήνυμα σφάλματος. Χρησιμοποίησε την κατοχή throw για να δημιουργήσεις προσαρμοσμένα σφάλματα (να προκαλέσεις εξαίρεση). Αν χρησιμοποιήσεις την κατοχή throw με την κατοχή try και catch, μπορείς να ελέγξεις τον ροή του προγράμματος και να δημιουργήσεις προσαρμοσμένα μηνύματα σφαλμάτων.

Για περισσότερες πληροφορίες για τα σφάλματα του JavaScript, μάθε τον οδηγό σφαλμάτων του JavaScript.

Example

Σε αυτό το παράδειγμα, έχουμε κάνει λάθος στο κείμενο του κώδικα (στο κώδικα του try).

Αυτό το παράδειγμα θα πρέπει να εμφανίσει "Welcome guest!", αλλά έχει γράψει λάθος την λέξη alert.

Ο κώδικας catch θα πιάσει το σφάλμα και θα εκτελέσει τον κώδικα για την αντιμετώπισή του:

<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
try {
  adddlert("Welcome guest!");
}
catch(err) {
  document.getElementById("demo").innerHTML = err.message;
}
</script>
</body>
</html>

try it yourself

Υπάρχουν περισσότερες TIY παραδείγματα στο κάτω μέρος της σελίδας.

σύνταξη

try {
  tryCode - Μέρος κώδικα που πρέπει να δοκιμαστεί
}
catch(err) {
  catchCode - Μέρος κώδικα για την αντιμετώπιση σφαλμάτων
} 
finally {
  finallyCode - Μέρος κώδικα που πρέπει να εκτελεστεί ανεξάρτητα από το αποτέλεσμα του try / catch
}

τιμές παράμετρων

παράμετροι περιγραφή
tryCode απαιτείται. Ορίζει τον κώδικα που πρέπει να δοκιμαστεί κατά την εκτέλεση.
err απαιτείται, αν χρησιμοποιείται με το catch. Ορίζει την τοπική μεταβλητή που αναφέρεται στο σφάλμα. Η μεταβλητή μπορεί να αναφέρεται στο αντικείμενο Error (το οποίο περιέχει πληροφορίες για το σφάλμα, όπως το μήνυμα "'addlert' is not defined"). Αν η εξαίρεση δημιουργήθηκε από την κατοχή throw, η μεταβλητή αναφέρεται στο αντικείμενο που καθορίζεται από την κατοχή throw (βλέπε "πιο πολλές παραδείγματα").
catchCode προαιρετικό. Αν συμβεί σφάλμα στον κώδικα του try, πρέπει να εκτελεστεί ο κώδικας. Αν δεν συμβεί σφάλμα, αυτός ο κώδικας δεν θα εκτελεστεί ποτέ.
finallyCode προαιρετικό. Ανεξάρτητα από το αποτέλεσμα του try / catch, πρέπει να εκτελεστεί ο κώδικας.

τεχνικές λεπτομέρειες

JavaScript version: ECMAScript 3

More examples

Example

This example checks the input. If the value is incorrect, it throws an exception (err).

The "catch" statement catches exceptions (err) and displays a custom error message:

<!DOCTYPE html>
<html>
<body>
<p>Please input a number between 5 and 10:</p>
<input id="demo" type="text">
<button type="button" onclick="myFunction()">Test Input</button>
<p id="message"></p>
<script>
function myFunction() {
  var message, x;
  message = document.getElementById("message");
  message.innerHTML = "";
  x = document.getElementById("demo").value;
  try { 
    if(x == "") throw "is Empty";
    if(isNaN(x)) throw "not a number";
    if(x > 10) throw "too high";
    if(x < 5) throw "too low";
  }
  catch(err) {
    message.innerHTML = "Input " + err;
  }
}
</script>
</body>
</html>

try it yourself

Example

The "finally" statement allows you to execute code after both the "try" and "catch" blocks, regardless of the outcome:

function myFunction()
  var message, x;
  message = document.getElementById("message");
  message.innerHTML = "";
  x = document.getElementById("demo").value;
  try { 
    if(x == "") throw "Empty";
    if(isNaN(x)) throw "Not a number";
    if(x > 10) throw "Too high";
    if(x < 5) throw "Too low";
  }
  catch(err) {
    message.innerHTML = "Error: " + err + ".";
  }
  finally {
    document.getElementById("demo").value = "";
  }
}

try it yourself

browser supports

语句 Chrome IE Firefox Safari Opera
try/catch/finally Υποστήριξη Υποστήριξη Υποστήριξη Υποστήριξη Υποστήριξη

Σχετικές Σελίδες

JavaScript Εκμάθηση:JavaScript Σφάλματα

JavaScript Εγχειρίδιο Εference:JavaScript throw Εντολή