Apa saja 3 jenis kesalahan dan bagaimana Anda menangani pengecualian dalam contoh javascript?

Kesalahan adalah pernyataan yang tidak membiarkan program berjalan dengan baik. Ada tiga jenis kesalahan utama yang dapat terjadi saat mengompilasi program JavaScript. kesalahan sintaksis, kesalahan runtime, dan kesalahan logis

Jenis kesalahan yang paling umum adalah kesalahan sintaksis, di mana sesuatu yang salah dalam sintaks badan program menimbulkan kesalahan ini. Kesalahan sintaks juga dikenal sebagai kesalahan parsing. Dalam JavaScript, mereka muncul pada waktu interpretasi

Pertimbangkan segmen kode ini

  <script type=''text/javascript''>
    window.show(;
  </script>

Program ini akan menimbulkan kesalahan karena braket penutup dari fungsi pertunjukan tidak ada

Kesalahan runtime terjadi selama runtime program setelah diinterpretasikan oleh compiler

Pertimbangkan segmen kode ini

  <script type=''text/javascript''>
    window.show();
  </script>
_

Perhatikan bahwa tidak ada fungsi acara yang ditentukan. Program ini akan memunculkan kesalahan saat runtime karena fungsi yang tidak ada dipanggil, meskipun sintaksnya benar

Kesalahan logis adalah yang paling sulit ditemukan karena sintaksnya benar tetapi logikanya tidak. Pertimbangkan pernyataan, '' John sedang bermain gitar. '' Pernyataan ini secara logis benar dan sintaksnya juga benar. Sekarang pertimbangkan pernyataan lain. '' Gitar memainkan John. '' Pernyataan ini benar sehubungan dengan sintaksnya tetapi secara logis salah. Jenis kesalahan ini menyebabkan masalah serius karena mengubah seluruh jalur cara kerja program Anda

Apa saja 3 jenis kesalahan dan bagaimana Anda menangani pengecualian dalam contoh javascript?

Terjadi kesalahan saat mencoba memuat video ini

Coba segarkan halaman, atau hubungi dukungan pelanggan

Anda harus cC membuat akun untuk terus menonton

Daftar untuk melihat pelajaran ini

Apakah Anda seorang siswa atau guru?

Saya seorang siswa saya seorang guru

Buat Akun Anda Untuk Terus Menonton

Sebagai anggota, Anda juga akan mendapatkan akses tak terbatas ke lebih dari 84.000 pelajaran matematika, bahasa Inggris, sains, sejarah, dan banyak lagi. Selain itu, dapatkan tes latihan, kuis, dan pelatihan yang dipersonalisasi untuk membantu Anda sukses

Dapatkan akses tak terbatas ke lebih dari 84.000 pelajaran

Hanya perlu beberapa menit untuk menyiapkannya dan Anda dapat membatalkannya kapan saja

Sudah terdaftar?

Sumber daya yang dibuat oleh guru untuk guru

Lebih dari 30.000 pelajaran video & sumber daya pengajaran-semuanya di satu tempat.

Pelajaran video

Kuis dan Lembar Kerja

Integrasi Kelas

Rencana Pelajaran

Saya pasti akan merekomendasikan Studi. com kepada rekan-rekan saya. Ini seperti seorang guru melambaikan tongkat ajaib dan melakukan pekerjaan untuk saya. Saya merasa itu adalah garis hidup

Apa pun yang bisa salah, akan salah. Hukum Murphy bahkan berlaku untuk pengembangan perangkat lunak. Untuk program nontrivial, masalahnya bukan jika, tetapi kapan terjadi kesalahan. Ketidakpatuhan standar, fitur yang tidak didukung, dan keanehan browser hanyalah beberapa sumber potensi masalah yang dihadapi pengembang web. Mengingat semua hal yang bisa salah, JavaScript memiliki cara sederhana yang mengejutkan untuk mengatasi kesalahan ― itu menyerah begitu saja dan gagal secara diam-diam. Setidaknya, itulah perilaku yang dilihat oleh pengguna. Pada kenyataannya, ada banyak hal yang terjadi di bawah tenda

Saat pernyataan JavaScript menghasilkan kesalahan, dikatakan akan melempar pengecualian. Alih-alih melanjutkan ke pernyataan berikutnya, juru bahasa JavaScript memeriksa kode penanganan pengecualian. Jika tidak ada penangan pengecualian, maka program kembali dari fungsi apa pun yang melontarkan pengecualian. Ini diulangi untuk setiap fungsi pada tumpukan panggilan hingga penangan pengecualian ditemukan atau hingga fungsi tingkat teratas tercapai, yang menyebabkan program berhenti

Objek Kesalahan

Saat pengecualian terjadi, objek yang mewakili kesalahan dibuat dan dilempar. Bahasa JavaScript mendefinisikan tujuh jenis objek kesalahan bawaan. Jenis kesalahan ini adalah dasar untuk penanganan pengecualian. Setiap jenis kesalahan dijelaskan secara rinci di bawah ini

Kesalahan

Jenis "Kesalahan" digunakan untuk mewakili pengecualian umum. Jenis pengecualian ini paling sering digunakan untuk mengimplementasikan pengecualian yang ditentukan pengguna. Topik membuat pengecualian yang ditentukan pengguna akan ditinjau kembali nanti di artikel ini. Objek "Kesalahan" dibuat dengan memanggil konstruktornya seperti yang ditunjukkan pada contoh berikut

var error = new Error("error message");

Objek "Kesalahan" berisi dua properti, "nama" dan "pesan". Properti "nama" menentukan jenis pengecualian (dalam hal ini "Kesalahan"). Properti "message" memberikan deskripsi pengecualian yang lebih detail. "Pesan" mendapatkan nilainya dari string yang diteruskan ke konstruktor pengecualian. Jenis pengecualian yang tersisa mewakili jenis kesalahan yang lebih spesifik, tetapi semuanya digunakan dengan cara yang sama seperti jenis "Kesalahan" umum

RangeError

Pengecualian "RangeError" dihasilkan oleh angka yang berada di luar rentang yang ditentukan. Misalnya, angka JavaScript memiliki metode toFixed() yang mengambil argumen "digit" yang mewakili jumlah digit yang muncul setelah titik desimal. Argumen ini diharapkan antara 0 dan 20 (walaupun beberapa browser mendukung rentang yang lebih luas). Jika nilai "digit" berada di luar rentang ini, maka "RangeError" akan dilemparkan. Skenario ini ditunjukkan dalam contoh berikut

var pi = 3.14159;

pi.toFixed(100000);  // RangeError

ReferensiKesalahan

Pengecualian "ReferenceError" dilemparkan ketika variabel yang tidak ada diakses. Pengecualian ini biasanya terjadi ketika nama variabel yang ada salah eja. Pada contoh di bawah ini, “ReferenceError” terjadi saat “bar” diakses. Perhatikan bahwa contoh ini mengasumsikan bahwa "bar" tidak ada dalam cakupan aktif mana pun saat operasi penambahan dilakukan

function foo() {
  bar++;  // ReferenceError
}
_

Kesalahan sintaks

Sebuah "SyntaxError" dilemparkan ketika aturan bahasa JavaScript dilanggar. Pengembang yang akrab dengan bahasa seperti C dan Java terbiasa menghadapi kesalahan sintaks selama proses kompilasi. Namun, karena JavaScript adalah bahasa yang ditafsirkan, kesalahan sintaksis tidak teridentifikasi hingga kode dieksekusi. Kesalahan sintaks bersifat unik karena merupakan satu-satunya jenis pengecualian yang tidak dapat dipulihkan. Contoh berikut menghasilkan kesalahan sintaksis karena pernyataan "if" tidak memiliki kurung kurawal penutup

if (foo) {  // SyntaxError
  // the closing curly brace is missing

TypeError

Pengecualian "TypeError" terjadi ketika nilai bukan tipe yang diharapkan. Mencoba memanggil metode objek yang tidak ada adalah penyebab umum dari jenis pengecualian ini. Contoh berikut membuat objek kosong bernama "foo" dan kemudian mencoba memanggil metode bar()-nya. Karena bar() tidak didefinisikan, sebuah "TypeError" dilemparkan pada pemanggilan yang dicoba

var foo = {};

foo.bar(); // TypeError
_

Kesalahan URI

Pengecualian "URIError" dilemparkan oleh metode seperti encodeURI() dan decodeURI() saat mereka menemukan URI yang salah format. Contoh berikut menghasilkan "URIError" saat mencoba mendekode string "%". Karakter “%” mewakili awal dari escape sequence URI. Karena tidak ada yang mengikuti “%” dalam contoh ini, string tersebut merupakan escape sequence yang tidak valid, dan oleh karena itu merupakan komponen URI yang salah format

decodeURIComponent("%"); // URIError

EvalError

Pengecualian "EvalError" dilemparkan ketika fungsi eval() digunakan secara tidak benar. Pengecualian ini tidak digunakan dalam versi standar EcmaScript terbaru. Namun, mereka masih didukung untuk mempertahankan kompatibilitas mundur dengan versi standar yang lebih lama

Menangani Pengecualian

Sekarang setelah kita tahu apa itu pengecualian, saatnya mempelajari cara menghentikannya agar tidak merusak program kita. JavaScript menangani pengecualian melalui pernyataan “coba…tangkap…akhirnya”. Contoh pernyataan umum ditunjukkan di bawah ini

try {
  // attempt to execute this code
} catch (exception) {
  // this code handles exceptions
} finally {
  // this code always gets executed
}
_

Bagian pertama dari pernyataan “coba…tangkap…akhirnya” adalah klausa “coba”. Klausa "coba" adalah wajib, dan digunakan untuk membatasi blok kode yang dicurigai oleh pemrogram dapat menghasilkan pengecualian. Klausa “coba” harus diikuti oleh salah satu atau kedua klausa “tangkap” dan “akhirnya”.

Klausul "menangkap".

Bagian kedua dari “coba…tangkap…akhirnya” adalah klausa “tangkap”. Klausa "catch" adalah blok kode yang hanya dieksekusi jika pengecualian terjadi pada klausa "try". Meskipun klausa "catch" adalah opsional, tidak mungkin untuk benar-benar menangani pengecualian tanpa pengecualian. Ini karena klausa "catch" menghentikan pengecualian menyebar melalui tumpukan panggilan, memungkinkan program untuk pulih. Jika pengecualian terjadi dalam blok "coba", maka kontrol segera diteruskan ke klausa "tangkap". Pengecualian yang terjadi juga diteruskan ke blok "catch" untuk diproses. Contoh berikut menunjukkan bagaimana klausa "catch" digunakan untuk menangani "ReferenceError". Perhatikan bahwa objek “ReferenceError” tersedia di klausa “catch” melalui variabel “exception”.

try {
  foo++;  // ReferenceError
} catch (exception) {
  var message = exception.message;

  // handle the exception
}
_

Aplikasi yang kompleks dapat menghasilkan berbagai pengecualian. Dalam kasus seperti itu, operator "instanceof" dapat digunakan untuk membedakan berbagai jenis pengecualian. Dalam contoh berikut, asumsikan bahwa klausa "coba" dapat menghasilkan beberapa jenis pengecualian. Klausul "catch" yang sesuai menggunakan "instanceof" untuk menangani pengecualian "TypeError" dan "ReferenceError" secara terpisah dari semua jenis kesalahan lainnya

try {
  // assume an exception occurs
} catch (exception) {
  if (exception instanceof TypeError) {
    // Handle TypeError exceptions
  } else if (exception instanceof ReferenceError) {
    // Handle ReferenceError exceptions
  } else {
    // Handle all other types of exceptions
  }
}
Klausul “akhirnya”.

Komponen terakhir dari pernyataan “coba…tangkap…akhirnya” adalah klausa “akhirnya” opsional. Klausa "akhirnya" adalah blok kode yang dijalankan setelah klausa "coba" dan "tangkap", terlepas dari kesalahan apa pun. Klausul "akhirnya" berguna untuk memasukkan kode pembersihan (menutup file, dll. ) yang perlu dijalankan apa pun yang terjadi. Perhatikan bahwa klausa "akhirnya" bahkan dieksekusi jika terjadi pengecualian yang tidak tertangkap. Dalam skenario seperti itu, klausa "akhirnya" dijalankan dan kemudian pengecualian yang dilemparkan berjalan normal

Satu catatan menarik tentang klausa “finally” adalah bahwa klausa ini akan dieksekusi bahkan jika klausa “try” atau “catch” mengeksekusi pernyataan “return”. Misalnya, fungsi berikut menghasilkan false karena klausa “akhirnya” adalah hal terakhir yang dieksekusi

function foo() {
  try {
    return true;
  } finally {
    return false;
  }
}
_Melempar Pengecualian

JavaScript memungkinkan pemrogram untuk membuang pengecualian mereka sendiri melalui pernyataan "melempar" yang diberi nama dengan tepat. Konsep ini bisa agak membingungkan bagi pengembang yang tidak berpengalaman. Lagi pula, pengembang berusaha keras untuk menulis kode yang bebas dari kesalahan, namun pernyataan "melempar" sengaja memperkenalkannya. Namun, dengan sengaja melemparkan pengecualian sebenarnya dapat menghasilkan kode yang lebih mudah untuk di-debug dan dipelihara. Misalnya, dengan membuat pesan kesalahan yang berarti, akan lebih mudah untuk mengidentifikasi dan menyelesaikan masalah

Beberapa contoh pernyataan "melempar" ditunjukkan di bawah ini. Tidak ada batasan pada jenis data yang dapat dilempar sebagai pengecualian. Juga tidak ada batasan berapa kali data yang sama dapat ditangkap dan dibuang. Dengan kata lain, pengecualian dapat dilempar, ditangkap, dan kemudian dilempar lagi

var pi = 3.14159;

pi.toFixed(100000);  // RangeError
0

Sementara pernyataan "melempar" dapat digunakan dengan tipe data apa pun, ada manfaat tertentu untuk menggunakan tipe pengecualian bawaan. Firefox, misalnya, memberikan perlakuan khusus pada objek tersebut dengan menambahkan informasi debug seperti nama file dan nomor baris tempat pengecualian terjadi

Sebagai contoh skenario, asumsikan bahwa operasi pembagian terjadi di suatu tempat di aplikasi Anda. Pembagian bisa menjadi gangguan karena kemungkinan pembagian dengan nol. Dalam JavaScript, operasi seperti itu menghasilkan "NaN". Ini dapat menyebabkan hasil yang membingungkan yang sulit untuk di-debug. Segalanya akan jauh lebih sederhana jika aplikasi mengeluh keras tentang pembagian dengan nol. Pernyataan "jika" berikut menyelesaikan ini untuk kita dengan memberikan pengecualian

var pi = 3.14159;

pi.toFixed(100000);  // RangeError
1

Tentu saja, mungkin lebih tepat menggunakan “RangeError” seperti yang ditunjukkan di bawah ini

var pi = 3.14159;

pi.toFixed(100000);  // RangeError
2 Objek Pengecualian Khusus

Kami baru saja mempelajari cara menghasilkan pesan kesalahan yang disesuaikan menggunakan tipe pengecualian bawaan. Namun, pendekatan lain adalah membuat jenis pengecualian baru dengan memperluas jenis "Kesalahan" yang ada. Karena tipe baru mewarisi dari "Kesalahan", itu dapat digunakan seperti tipe pengecualian bawaan lainnya. Meskipun topik pewarisan dalam JavaScript berada di luar cakupan artikel ini, teknik sederhana dibahas di sini

Contoh berikut kembali ke masalah berurusan dengan pembagian dengan nol. Alih-alih menggunakan objek "Error" atau "RangeError" seperti yang kita lakukan sebelumnya, kita akan membuat jenis pengecualian kita sendiri. Dalam contoh ini, kami membuat jenis pengecualian "DivisionByZeroError". Fungsi dalam contoh bertindak sebagai konstruktor untuk tipe baru kita. Konstruktor menangani penetapan properti "nama" dan "pesan". Dua baris terakhir dari contoh menyebabkan tipe baru mewarisi dari objek "Kesalahan".

var pi = 3.14159;

pi.toFixed(100000);  // RangeError
3Hal yang Perlu Diingat
  • Pernyataan “coba… tangkap… akhirnya” digunakan untuk menangani pengecualian
  • Klausul "coba" mengidentifikasi kode yang berpotensi menghasilkan pengecualian
  • Klausa "catch" hanya dijalankan ketika pengecualian terjadi
  • Klausa "akhirnya" selalu dijalankan, apa pun yang terjadi
  • Pernyataan "melempar" digunakan untuk menghasilkan pengecualian
  • Objek pengecualian khusus harus mewarisi dari jenis "Kesalahan" yang ada

Gambar melalui Fotolia

Bagikan Artikel Ini

Colin Ihrig

Colin Ihrig adalah seorang insinyur perangkat lunak yang bekerja terutama dengan Node. js. Colin adalah penulis Pro Node. js untuk Pengembang, dan penulis pendamping Full Stack JavaScript Development dengan MEAN. Colin adalah anggota Node. js Komite Pengarah Teknis, dan anggota tim inti hapi. Colin menerima gelar Bachelor of Science in Engineering, dan Master of Science in Computer Engineering dari University of Pittsburgh masing-masing pada tahun 2005 dan 2008

Apa saja 3 jenis kesalahan dalam JavaScript?

Ada tiga jenis kesalahan utama yang dapat terjadi saat mengompilasi program JavaScript. kesalahan sintaksis, kesalahan runtime, dan kesalahan logis .

Apa saja jenis kesalahan dalam JavaScript?

Ada 7 jenis kesalahan JavaScript. Kesalahan Sintaks, Kesalahan Referensi, Kesalahan Jenis, Kesalahan Evaluasi, Kesalahan Rentang, Kesalahan URI, dan Kesalahan Internal .

Bagaimana pengecualian dan kesalahan ditangani dalam JavaScript?

Dalam penanganan pengecualian. Artinya ketika kondisi tidak normal terjadi, pengecualian dilemparkan menggunakan lemparan. Eksepsi yang dilemparkan ditangani dengan membungkus kode ke dalam blok try… catch . Jika ada kesalahan, blok catch akan dieksekusi, jika tidak, hanya pernyataan blok try yang akan dieksekusi.

Apa tiga jenis kesalahan Bagaimana kesalahan berbeda dari pengecualian?

Beberapa contoh kesalahan adalah kesalahan kerusakan sistem dan kesalahan kehabisan memori . Kesalahan sebagian besar terjadi pada waktu proses yang merupakan jenis yang tidak dicentang. Pengecualian adalah masalah yang dapat terjadi pada waktu proses dan waktu kompilasi. Ini terutama terjadi pada kode yang ditulis oleh pengembang.