Rumah >hujung hadapan web >tutorial js >Memahami cuba...tangkap...akhirnya_javascript teknik dalam javascript
Artikel ini menganalisis penggunaan try...catch...akhirnya dalam javascript dan berkongsi dengan anda untuk rujukan anda Kandungan khusus adalah seperti berikut
Sedikit lebih rumit, anda perlu menggunakan pernyataan penghakiman, jika lain untuk melakukan penghakiman bersyarat. Jika syarat lain, penghakiman semacam ini sudah biasa bagi pengaturcara yang menulis kod program.
Jika anda rasa ini sangat mudah, anda boleh menggunakan pernyataan penghakiman bersyarat campuran if else ditambah cuba tangkap untuk memproses pernyataan Walaupun cuba tangkap boleh mengendalikan sebarang objek, lemparkan pernyataan ralat melalui lontaran, dan kemudian tangkap Lempar objek atau ralat objek Hari ini kita hanya bercakap tentang cuba...tangkap Contoh berikut membuang tatasusunan, masa, fungsi prototaip, jenis angka, dll.
function trycatch () { var array = [234], newdate = new Date(), fun = function(){}, is = 12.22, call; try{ throw array + '\n' + newdate.toLocaleString() + ' \n' + fun.prototype.constructor + '\n' + (typeof is == 'number') +' \n' + call ; //小心local后面还有一个'e' } catch(e){ console.log(e); } finally{ console.log('err finally'); } } trycatch () // 输出: // 234 // 2015/10/12 下午10:07:03 // function (){} // true // undefined
Untuk lebih tepat, letakkan kenyataan sebagai percubaan yang boleh menyebabkan ralat. Apabila pernyataan cuba mula dilaksanakan dan ralat dilemparkan, catch melaksanakan pernyataan dalaman dan mesej ralat yang sepadan dalam percubaan. Bila hendak melaksanakan pernyataan akhirnya? Pernyataan akhirnya akan dilaksanakan hanya selepas pernyataan cuba dan pernyataan tangkapan dilaksanakan.
function trycatch () { try{ throw new Error('koringz'); } catch(e){ console.log(e.message); } finally{ console.log('err finally'); } } trycatch () // 输出: // koringz // err finally
Melemparkan pernyataan ralat melalui percubaan, kita melihat bahawa mesej ralat // koringz ditangkap dalam tangkapan, tetapi yang sama akhirnya juga menghasilkan // err akhirnya. Walaupun kami memahami kaedah pemprosesan aliran kerja try catch, kami tidak memahami pengendali kod finally block Menurut cara pemikiran kami yang konsisten tentang penyataan akhirnya pada masa lalu, akhirnya output tidak dihadkan dan dikekang oleh try and catch. Berikut ialah beberapa kod tunjuk cara keluaran akhirnya:
function trycatch () { try{ throw new Error('koringz'); } finally{ console.log('err finally'); return console.log('new finally') } } trycatch () // err finally // new finally
Seperti yang ditunjukkan di atas, cuba lemparkan pernyataan ralat, dan hasil output akhirnya ialah: // err finally // new finally.
function trycatch () { try{ throw new Error('koringz'); } catch(e){ console.log('err finally'); return console.log('new finally') } } trycatch () // err finally // new finally
Seperti yang ditunjukkan di atas, cuba lemparkan pernyataan ralat, dan catch menangkap hasil output ralat seperti di atas. // err akhirnya // baru akhirnya.
Apabila saya mengubah suai pernyataan cuba:
function trycatch () { try{ // } catch(e){ console.log('err finally'); return console.log('new finally') } } trycatch () // 空(viod) // 空(viod)
Hasilnya ialah output kosong. // void(viod). Kerana cuba tidak membuang ralat, tangkapan tidak menangkap pengecualian, jadi hasil output kosong.
Kemudian mari kita lihat kes berikut Melalui contoh berikut, anda mungkin mempunyai pemahaman yang lebih baik tentang pengendalian pengecualian dalam pernyataan try catch.
try{ try{ throw new Error('open'); } catch(e){ console.info(e.message); throw e } finally{ console.log('finally'); } } catch(e){ console.log('op',e.message); } // open // finally // op open
Apabila kita menyarangkan cuba menangkap dalam blok kod cuba yang boleh menyebabkan ralat, buang kenyataan yang boleh menyebabkan ralat melalui blok kod bersarang cuba buang Ralat baharu('buka');, diikuti dengan percubaan bersarang Lulus ralat kepada tangkapan bersarang untuk diproses Selepas akhirnya berjalan melalui tangkapan akhirnya, kita melihat hasil terakhir // op terbuka Sebenarnya, maklumat ralat yang ditangkap oleh tangkapan bersarang dibuang ke tangkapan paling luar. // op buka
Maksudnya: sebarang pengecualian yang diberikan hanya akan ditangkap sekali oleh blok tangkapan tertutup yang terdekat.
Sudah tentu, sebarang pengecualian baharu yang dilemparkan dalam blok "dalaman" (kerana kod dalam blok tangkapan juga boleh melontar pengecualian) akan ditangkap oleh blok "luar".
Di atas adalah keseluruhan kandungan artikel ini saya harap ia akan membantu semua orang dalam mempelajari pengaturcaraan javascript.