Bagaimanakah anda mengendalikan pengecualian yang tidak dikendalikan dalam panggilan balik tak segerak dengan janji Bluebird?

DDD
Lepaskan: 2024-10-26 16:39:30
asal
946 orang telah melayarinya

How do you handle unhandled exceptions in asynchronous callbacks with Bluebird promises?

Pengendalian Pengecualian Tak Segerak dengan Janji Bluebird

S: Bagaimana untuk mengendalikan pengecualian yang tidak dikendalikan dalam panggilan balik tak segerak dengan janji Bluebird?

Janji Bluebird sememangnya tidak menangkap pengecualian yang dilemparkan daripada panggilan balik tak segerak, tidak seperti domain.

J: Gunakan Promise Constructors atau kemudian() Penutupan untuk Mengendalikan Pengecualian

Untuk menangkap pengecualian dalam panggilan balik tak segerak, bungkus panggilan balik dalam pembangun janji atau kemudian() penutupan:

<code class="javascript">function getPromise(){
    return new Promise(function(done, reject){
        setTimeout(function(){
            throw new Error("AJAJAJA");
        }, 500);
    }).then(function() {
        console.log("hihihihi");
        throw new Error("Oh no!");
    });
}</code>
Salin selepas log masuk

Elakkan Melemparkan Panggilan Balik Async Tersuai

Jangan sekali-kali buang pengecualian terus dalam panggilan balik asinkron tersuai (di luar panggilan balik janji). Sebaliknya, tolak janji sekeliling:

<code class="javascript">function getPromise(){
    return new Promise(function(done, reject){
        setTimeout(done, 500);
    }).then(function() {
        console.log("hihihihi");
        reject(new Error("Oh no!"));
    });
}</code>
Salin selepas log masuk

Contoh

Menggunakan pembina janji:

<code class="javascript">var p = getPromise();
    p.then(function(){
        console.log("Yay");
    }).error(function(e){
        console.log("Rejected",e);
    }).catch(Error, function(e){
        console.log("Error",e);
    }).catch(function(e){
        console.log("Unknown", e);
    });</code>
Salin selepas log masuk

Output:

Error [Error: Oh no!]
Salin selepas log masuk

Pendekatan ini memastikan pengecualian ditangkap dan dikendalikan dengan sewajarnya, menghalang aplikasi daripada ranap.

Atas ialah kandungan terperinci Bagaimanakah anda mengendalikan pengecualian yang tidak dikendalikan dalam panggilan balik tak segerak dengan janji Bluebird?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!