Dalam Javascript, misalkan saya ingin melakukan pembersihan ketika pengecualian terjadi, tetapi biarkan pengecualian terus menyebarkan tumpukan, misalnya:
try {
enterAwesomeMode();
doRiskyStuff(); // might throw an exception
} catch (e) {
leaveAwesomeMode();
throw e;
}
doMoreStuff();
leaveAwesomeMode();
Masalah dengan kode ini adalah bahwa menangkap dan memikirkan kembali pengecualian menyebabkan informasi jejak tumpukan hingga titik tersebut hilang, sehingga jika pengecualian tersebut kemudian ditangkap lagi, lebih tinggi di tumpukan, jejak tumpukan hanya turun ke bagian -melemparkan. Ini menyebalkan karena itu berarti tidak mengandung fungsi yang sebenarnya melempar pengecualian.
Ternyata, coba .. akhirnya memiliki perilaku yang sama, setidaknya di Chrome (yaitu, bukan lemparan ulang yang merupakan masalah tepatnya, tetapi keberadaan blok handler pengecualian sama sekali.)
Adakah yang tahu cara untuk melakukan rethrow eksepsi dalam Javascript tetapi menyimpan jejak stack yang terkait dengannya? Gagal itu, bagaimana dengan saran untuk cara lain untuk menambahkan penangan pembersihan pengecualian-aman, sementara juga menangkap jejak tumpukan lengkap ketika pengecualian terjadi?
Terima kasih atas petunjuknya :)