Cara menggunakan javascript sebaris coba tangkap

Kesalahan terjadi. Itu diberikan. Menurut hukum Murphy, apa pun yang salah, akan salah. Pekerjaan Anda, sebagai seorang programmer, adalah bersiap untuk fakta itu. Anda memiliki seperangkat alat yang disiapkan untuk melakukan hal itu. Dalam artikel ini, kami membahasnya dan menjelaskan cara kerjanya

Sebuah kesalahan

Ketika kesalahan runtime terjadi, objek kesalahan baru dibuat dan dilempar. Browser memberi Anda nama file dan nomor baris tempat masalah terjadi. Waktu untuk beberapa kejahatan

1

kosnol. log('Halo dunia. ');

Saya telah memasukkan kode itu ke konsol DevTools saya dan mendapatkannya

Cara menggunakan javascript sebaris coba tangkap

Hal yang mungkin menurut Anda mencolok di sini adalah  VM164 . Jika Anda mencarinya di dalam, Anda menemukan bahwa itu tidak memiliki arti khusus dan terjadi jika kode Anda tidak terikat pada file tertentu. Hal yang sama terjadi jika Anda menggunakan eval (yang mungkin tidak seharusnya Anda lakukan. ). Jika tidak, itu adalah nama file tempat kesalahan terjadi.

Dalam contoh ini, ReferenceError adalah nama pesan dan cosnole is not defined adalah pesannya

Karena kita merujuk di sini untuk melempar kesalahan, bagaimana kalau kita menangkapnya?

Coba tangkap

Jika kesalahan dilemparkan ke dalam blok percobaan, eksekusi kode lainnya dihentikan. Kesalahan ditangkap sehingga Anda dapat menanganinya di dalam blok tangkap. Jika tidak ada pengecualian yang dilemparkan ke blok try, tangkapan akan dilewati

1

2

3

4

5

6

coba {

  kosnol. log('Halo dunia. ');

} tangkap(kesalahan) {

  konsol. log(kesalahan. nama); // ReferenceError

  konsol. log(kesalahan. pesan); // cosnole tidak ditentukan

}

Meskipun pada masa lalu semua variabel yang dideklarasikan dulunya memiliki ruang lingkup fungsional (karena dideklarasikan menggunakan kata kunci var, bukan dengan const dan let), pernyataan catch adalah contoh ruang lingkup blok. Blok catch menerima pengenal yang disebut error pada contoh di atas. Itu memegang nilai dari apa yang dilemparkan di blok percobaan. Karena ini adalah cakupan blok, setelah blok tangkapan selesai dieksekusi, kesalahan tidak lagi tersedia

Jika Anda ingin tahu lebih banyak tentang deklarasi variabel dalam JavaScript, lihat Cakupan dalam JavaScript. Berbagai jenis deklarasi variabel

Hal penting yang perlu diingat adalah bahwa jika Anda tidak memberikan nama variabel untuk kesalahan dalam pernyataan catch, kesalahan akan terjadi

Cara menggunakan javascript sebaris coba tangkap

Coba...catch berfungsi hanya untuk kesalahan runtime. Jika kesalahan berasal dari fakta bahwa kode Anda bukan JavaScript yang valid, itu tidak akan tertangkap

Cara menggunakan javascript sebaris coba tangkap

Kode asinkron

Mekanisme coba.. tangkap tidak dapat digunakan untuk mencegat kesalahan yang dihasilkan dalam panggilan balik asinkron. Fakta ini adalah sumber kesalahpahaman yang umum

1

2

3

4

5

6

7

coba {

  setTimeout(() => {

    kosnol. log('Halo dunia. ');  

  });

} tangkap(kesalahan) {

  konsol. log(kesalahan);

}

Kesalahan Referensi Tidak Tertangkap. cosnole tidak ditentukan pada setTimeout

Itu tidak berfungsi karena fungsi panggilan balik yang diteruskan ke setTimeout disebut secara asinkron. Pada saat dijalankan, blok try...catch di sekitarnya telah keluar. Anda harus memasukkannya ke dalam panggilan balik itu sendiri

Jauh lebih baik jika Anda menggunakan janji. Anda dapat menangkap kesalahan Anda menggunakan fungsi tangkap

1

2

3

4

5

6

7

8

9

10

fungsi failingFunction(){

  kembalikan baru Janji(() => {

    kosnol. log('Halo dunia. ');

  })

}

 

failingFunction()

  . tangkap(kesalahan => {

    konsol. log(kesalahan);

  });

Jika Anda ingin mengetahui lebih lanjut tentang promise dan callback, lihat Menjelaskan promise dan callback sambil menerapkan algoritme pengurutan

Blok try…catch membuat comeback untuk menangani kode asinkron jika Anda menggunakan async/menunggu

1

2

3

4

5

6

7

8

9

10

11

12

13

fungsi failingFunction(){

  kembalikan baru Janji(() => {

    kosnol. log('Halo dunia. ');

  })

}

 

(async fungsi() {

  coba {

    menunggu failingFunction();

  } tangkap(kesalahan){

    konsol. log(kesalahan);

  }

})()

Jika Anda tertarik dengan async/menunggu, baca Menjelaskan async/menunggu. Membuat janji tiruan

Akhirnya

Ada satu klausa lagi yang bisa Anda gunakan, dan akhirnya. Itu akan dieksekusi terlepas dari apakah pengecualian dilemparkan

1

2

3

4

5

6

7

8

9

biarkan memuat = benar;

coba {

  const pengguna = menunggu fetchUsers();

  konsol. log(pengguna);

} tangkap(kesalahan){

  konsol. log('Gagal mengambil pengguna', kesalahan);

} akhirnya {

  memuat = false;

}

Jika Anda menggunakan blok try, Anda harus mengikutinya dengan pernyataan catch, blok finally, atau keduanya. Anda mungkin berpikir bahwa pernyataan akhirnya tidak memiliki tujuan apa pun, karena Anda dapat menulis kode tepat di bawah blok try...catch. Faktanya adalah bahwa itu tidak selalu akan dieksekusi. Contohnya adalah blok percobaan bersarang

1

2

3

4

5

6

7

8

9

10

11

12

coba {

  coba {

    kosnol. log('Halo dunia. '); // melontarkan kesalahan

  }

  akhirnya {

    konsol. log('Akhirnya');

  }

  konsol. log('Apakah saya akan lari?');

}

tangkap (kesalahan) {

  konsol. kesalahan(kesalahan. pesan);

}

Dalam contoh ini,  konsol. log('Apakah saya akan lari?') is not executed, because control is immediately transferred to the outer try’s catch-block. The finally is executed first even in such a case.

Untuk contoh lebih lanjut tentang cara kerjanya, lihat

Melontarkan pengecualian

JavaScript memungkinkan kita untuk membuang pengecualian kita sendiri menggunakan kata kunci lempar. Tidak ada batasan pada jenis data yang Anda buang

1

2

3

4

5

coba {

  melempar 'Tidak bagus. ';

} tangkap(kesalahan) {

  konsol. log(kesalahan);

}

Objek Kesalahan

Kesalahan yang terjadi saat kesalahan runtime terjadi diwarisi dari Error. prototype dan terdiri dari dua properti. nama kesalahan dan pesannya. Namanya bisa salah satu atau custom

Kesalahan. prototipe. konstruktor menerima satu argumen, dan itu adalah pesan kesalahan. Jika Anda ingin melontarkan kesalahan non-generik, Anda dapat menggunakan salah satu kesalahan yang telah ditentukan sebelumnya, atau menentukan yang baru. Untuk melakukan ini, Anda dapat menggunakan kelas ES6

1

2

3

4

5

6

7

8

class MyError meluas Error {

  konstruktor(pesan) {

    super(pesan);

    ini. name = 'MyError';

  }

}

 

throw new MyError('Tidak bagus. ');

Cara menggunakan javascript sebaris coba tangkap

Seperti yang Anda lihat, nama kesalahan sekarang adalah MyError. Di Chrome itu akan dinamai sesuai kelas Anda, bahkan tanpa melakukan ini. name = 'MyError' , tetapi mungkin tidak berfungsi seperti itu di browser lain. Saat terjadi kesalahan, sebagian besar browser menampilkan seluruh tumpukan sehingga Anda dapat melihat apa yang sebenarnya terjadi.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

class MyError meluas Error {

  konstruktor(pesan) {

    super(pesan);

    ini. name = 'MyError';

  }

  toString() {

    return 'Pesan kesalahan yang diganti';

  }

}

 

fungsi Fungsi luar() {

  innerFunction();

}

 

fungsi innerFunction() {

  throw baru MyError('Not good!');

}

 

Fungsi Luar();

Cara menggunakan javascript sebaris coba tangkap

Kesalahan. prototipe. stack tidak standar, tetapi diimplementasikan oleh Chrome dan Firefox

1

2

3

4

5

coba {

  Fungsi Luar();

} tangkap(kesalahan) {

  konsol. log(kesalahan. tumpukan);

}

Karena tidak distandarisasi, perilakunya berbeda di seluruh browser, jadi berhati-hatilah

Cara menggunakan javascript sebaris coba tangkap

Ringkasan

Pada artikel ini, kami membahas penanganan kesalahan dalam JavaScript. Itu termasuk menjelaskan cara kerja kesalahan dalam JavaScript dan cara membuangnya. Kami juga telah membahas blok try...catch dan tujuan apa yang dapat dilakukan oleh blok finally. Selain itu, kami juga telah menjelaskan objek Error di JavaScript dan apa saja propertinya, termasuk beberapa yang tidak standar. Mudah-mudahan, ini akan membantu Anda menangani kesalahan Anda dengan lebih baik

Apa itu Coba dan Tangkap Javascript?

Bagian percobaan. catch memungkinkan Anda untuk menangani kesalahan runtime . Ini benar-benar memungkinkan untuk "mencoba" menjalankan kode dan "menangkap" kesalahan yang mungkin terjadi di dalamnya.

Kapan try catch digunakan?

Untuk mengatasi error di Java , sebuah pernyataan yang disebut try digunakan. menangkap. Pernyataan tersebut digunakan untuk memblokir eksekusi yang menampilkan error dan dapat membuat program terus berjalan tanpa dihentikan secara langsung.

Mengapa menggunakan coba tangkap?

Tujuan blok coba - tangkap adalah untuk menangkap dan menangani pengecualian yang dihasilkan oleh kode kerja.

Apa fungsi catch di java?

Dalam bahasa java, kata kunci catch harus dipasangkan dengan try. Penggunaan kata kunci catch adalah untuk menangkap error atau bug yang terjadi pada block try .