Rumah >hujung hadapan web >tutorial js >Memahami cuba...tangkap...akhirnya_javascript teknik dalam javascript

Memahami cuba...tangkap...akhirnya_javascript teknik dalam javascript

WBOY
WBOYasal
2016-05-16 15:23:381278semak imbas

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.

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn