Koa 2.6 - Error Handling

गलती संभालना




koa

गलती संभालना

पकड़ने की कोशिश

Async फ़ंक्शंस का उपयोग करने का मतलब है कि आप next प्रयास कर सकते हैं। यह उदाहरण सभी त्रुटियों में एक .status जोड़ता है:

app.use(async (ctx, next) => {
  try {
    await next();
  } catch (err) {
    err.status = err.statusCode || err.status || 500;
    throw err;
  }
});

डिफ़ॉल्ट त्रुटि हैंडलर

डिफ़ॉल्ट त्रुटि हैंडलर अनिवार्य रूप से मिडलवेयर श्रृंखला की शुरुआत में एक ट्राइ-कैच है। एक अलग त्रुटि हैंडलर का उपयोग करने के लिए, बस मिडलवेयर चेन की शुरुआत में एक और ट्राइ-कैच डालें और वहां त्रुटि को हैंडल करें। हालांकि, अधिकांश उपयोग के मामलों के लिए डिफ़ॉल्ट त्रुटि हैंडलर पर्याप्त है। यह err.status की स्थिति कोड का उपयोग करेगा, या डिफ़ॉल्ट रूप से 500। यदि err.expose सही है, तो err.message उत्तर होगा। अन्यथा, त्रुटि कोड से उत्पन्न संदेश का उपयोग किया जाएगा (जैसे कोड 500 के लिए संदेश "आंतरिक सर्वर त्रुटि" का उपयोग किया जाएगा)। सभी हेडर अनुरोध से साफ़ हो जाएंगे, लेकिन err.headers में कोई भी हेडर तब सेट किया जाएगा। आप इस सूची में हेडर जोड़ने के लिए, ऊपर बताए अनुसार, एक कोशिश-कैच का उपयोग कर सकते हैं।

यहाँ अपनी खुद की त्रुटि हैंडलर बनाने का एक उदाहरण है:

app.use(async (ctx, next) => {
  try {
    await next();
  } catch (err) {
    // will only respond with JSON
    ctx.status = err.statusCode || err.status || 500;
    ctx.body = {
      message: err.message
    };
  }
})

त्रुटि घटना

त्रुटि घटना श्रोताओं app.on('error') साथ निर्दिष्ट किया जा सकता है। यदि कोई त्रुटि श्रोता निर्दिष्ट नहीं है, तो डिफ़ॉल्ट त्रुटि श्रोता का उपयोग किया जाता है। त्रुटि श्रोता को सभी त्रुटियां प्राप्त होती हैं, जो मिडलवेयर श्रृंखला के माध्यम से अपना रास्ता बनाती हैं, यदि कोई त्रुटि पकड़ी जाती है और फिर से नहीं फेंकी जाती है, तो यह त्रुटि श्रोता को पारित नहीं होगी। यदि कोई त्रुटि ईवेंट श्रोता निर्दिष्ट नहीं किया जाता है, तो app.onerror का उपयोग किया जाएगा, जो बस त्रुटि को लॉग करता है। जब तक कि त्रुटि सही नहीं error.expose है।