Cara mengecek type error di javascript

Ada empat jenis kesalahan utama dalam pemrograman. kesalahan kompilasi, kesalahan logika, kesalahan input/validasi, dan kesalahan runtime. Kesalahan menangkap kode biasanya terbatas pada dua jenis terakhir. Alangkah baiknya jika Anda dapat menangani kesalahan logika Anda sendiri saat runtime, tetapi sayangnya, belum ada konstruksi kode seperti itu. Adapun kesalahan sintaksis, bahasa yang ditafsirkan seperti JavaScript tidak akan menangkapnya sampai skrip dimuat dan dibaca oleh browser. Meskipun biasanya Anda tidak dapat menemukan kesalahan sintaksis, seperti yang akan kita lihat sebentar lagi, ada kalanya Anda bisa. Artikel hari ini akan membahas kesalahan sintaksis, bersama dengan dua jenis kesalahan lainnya, sedangkan artikel berikutnya akan membahas tiga kesalahan lainnya

Enam Jenis Kesalahan JavaScript

JavaScript 1. 5 spesifikasi mendefinisikan enam jenis kesalahan utama, sebagai berikut

  • EvalError. Dibesarkan saat fungsi eval() digunakan dengan cara yang salah
  • RangeError. Dibesarkan saat variabel numerik melebihi rentang yang diizinkan
  • ReferensiKesalahan. Dibesarkan saat referensi yang tidak valid digunakan
  • Kesalahan sintaks. Dibesarkan saat terjadi kesalahan sintaks saat mem-parsing kode JavaScript
  • TypeError. Dibesarkan ketika jenis variabel tidak seperti yang diharapkan
  • Kesalahan URI. Dibesarkan saat fungsi encodeURI() atau decodeURI() digunakan dengan cara yang salah

Kesalahan. nama Properti

Manfaat memiliki semua jenis kesalahan yang berbeda adalah Anda dapat menentukan dengan lebih akurat jenis kesalahan apa yang sedang Anda hadapi. Ini dilakukan dengan menggunakan Error. nama properti karena pengetikan longgar JavaScript tidak mendukung menentukan jenis yang ingin Anda tangkap seperti yang Anda lakukan di Jawa

catch(ArrayIndexOutOfBoundsException e) {}

Dalam JavaScript, Anda harus menggunakan pernyataan if dalam satu blok "catch".

try {
	execute this block
} catch (error) {
	if (error.name === 'RangeError')
  {
  	do this
  }
  else if (error.name === 'ReferenceError')
  {
  	do this
  }
  else
  {
  	do this for more generic errors
  }
}
_

Saya pribadi suka menggunakan sakelar jika saya memeriksa beberapa jenis kesalahan sekaligus daripada jika karena properti nama kesalahan yang sama dievaluasi setiap saat

Berikut adalah contoh yang menghasilkan dan menangkap SyntaxError. Eksekusi kode ditautkan ke acara klik tombol menggunakan fungsi eval(). Meskipun ada juga tipe EvalError, itu tidak terjadi karena eval() digunakan dengan benar; . Faktanya, jenis kesalahan ini dilontarkan secara eksklusif dari metode eval() karena kesalahan sintaks menghentikan eksekusi kode dengan segera. Itu berarti Anda sering dapat menangkapnya dalam pengembangan dan pengujian

function captureSyntaxError() {
  try {
  	eval('alert("Hello world)');
  } 
	catch(error) {
		if (error.name === 'SyntaxError') {
  		alert("caught a " + error.name + ": " + error.message);
			//handle that error type
		}
		else {
			alert("caught a " + error.name + ": " + error.message);
			//handle generic errors here
		}
	}
}

Tangkap kesalahan sintaksis

Versi ini juga memeriksa EvalError, sehingga pernyataan if telah diganti dengan sebuah tombol. EvalError sangat jarang karena satu-satunya cara untuk menemukannya adalah dengan menggunakan eval dengan cara apa pun selain panggilan metode langsung. Jadi bagaimana Anda melakukannya?

var y = new eval();

Menyetelnya ke variabel juga harus membuang EvalError

eval = 'test';
_

Anda seharusnya tidak sering menemukan EvalError karena Internet Explorer 8 dan Firefox 4+ sepertinya tidak pernah membuangnya. Keduanya memperlakukan contoh pertama sebagai TypeError dan tidak keberatan mengatur eval ke apa pun yang Anda inginkan, secara efektif membuatnya terlupakan

function captureEvalError() {
  try {
  	var sum = eval('function test(( { return 1 + 1; }');
    alert("NO ERROR CAUGHT: Your browser doesn't seem to mind that we just set eval to the letter 'x'!");
	} catch(error) {
  	switch (error.name) {
  		case 'SyntaxError':
  			alert("caught a " + error.name + ": " + error.message);
  			//handle error…
  			break;
  		case 'EvalError':
  			alert("caught a " + error.name + ": " + error.message);
  			//handle error…
  			break;
  		default:
  			alert("caught a " + error.name + ": " + error.message);
  			//handle all other error types here…
  			break;
  	}
  } 
}

Tangkap kesalahan eval

Kesalahan Referensi

Kesalahan referensi adalah salah satu yang paling umum dari semuanya. Mereka disebabkan oleh referensi variabel yang belum dideklarasikan terlebih dahulu. Contohnya

var tmp = x; //no x variable declared!
_

Sebelum mencoba demo berikutnya, ketahuilah bahwa Internet Explorer 8 juga tidak menangani ini dengan benar, malah melemparkan TypeError

function captureReferenceError() {
  try {
  var sum = x + y;
    alert(sum);
	} catch(error) {
  	switch (error.name) {
  		case 'SyntaxError':
  			alert("caught a " + error.name + ": " + error.message);
  			//handle error…
  			break;
  		case 'EvalError':
  			alert("caught a " + error.name + ": " + error.message);
  			//handle error…
  			break;
        case 'ReferenceError':
  			alert("caught a " + error.name + ": " + error.message);
  			//handle error…
  			break;
  		default:
  			alert("caught a " + error.name + ": " + error.message);
  			//handle all other error types here…
  			break;
  	}
  } 
}

Tangkap kesalahan referensi

 

Kesimpulan

Hari ini kita belajar bagaimana membedakan berbagai jenis error menggunakan Error. nama properti serta tiga dari enam jenis kesalahan JS. Di artikel berikutnya, kami akan membahas jenis RangeError, TypeError, dan URIError

Bagaimana cara memeriksa jenis kesalahan dalam JavaScript?

Operator typeof mengembalikan informasi tipe sebagai string. .
Jika nilai ini tidak terdefinisi, kembalikan "[objek Tidak Terdefinisi]"
Jika nilai this adalah null, kembalikan "[object Null]"
Biarkan O menjadi hasil pemanggilan ToObject yang meneruskan nilai this sebagai argumen

Bagaimana cara memeriksa tipe data dalam JavaScript?

Anda dapat menggunakan operator tipe untuk menemukan tipe data variabel JavaScript.

Bagaimana cara mengatasi TypeError dalam JavaScript?

Solusi paling sederhana adalah dengan hanya menggunakan let daripada var . Dengan begitu, setiap kali melalui loop mendapatkan pengikatan baru dari variabel, dan dengan demikian penangan klik semuanya dikaitkan dengan nilai yang benar.

Bagaimana cara memeriksa objek tipe dalam JavaScript?

Gunakan operator typeof untuk mendapatkan tipe objek atau variabel dalam JavaScript . Operator typeof juga mengembalikan tipe objek yang dibuat dengan kata kunci "baru". Seperti yang Anda lihat pada contoh di atas, operator typeof mengembalikan tipe yang berbeda untuk string literal dan objek string.