Async Error Handling

KoaJS এর Async/Await এবং Promise সমর্থন - কোআজেএস (KoaJS) - Web Development

265

KoaJS একটি আধুনিক ওয়েব ফ্রেমওয়ার্ক যা async/await সিনট্যাক্স ব্যবহার করে অ্যাসিনক্রোনাস প্রোগ্রামিংয়ের সুবিধা প্রদান করে। তবে, অ্যাসিনক্রোনাস ফাংশনের মধ্যে ত্রুটি (error) হ্যান্ডলিং একটি গুরুত্বপূর্ণ বিষয়, কারণ অ্যাসিনক্রোনাস কোডের মধ্যে ত্রুটি ঘটলে তা সাধারণ try...catch ব্লক দিয়ে সঠিকভাবে হ্যান্ডল করা যায় না। KoaJS-এ অ্যাসিনক্রোনাস ত্রুটি হ্যান্ডলিং করার জন্য কিছু বিশেষ পদ্ধতি রয়েছে যা কোডকে আরও পরিষ্কার এবং স্থিতিশীল রাখে।


KoaJS-এ Async Error Handling কীভাবে কাজ করে?

KoaJS-এ, রিকোয়েস্টের প্রক্রিয়া এবং মিডলওয়্যারগুলিতে অ্যাসিনক্রোনাস কার্যক্রম করা হয়। যদি কোন মিডলওয়্যারে ত্রুটি ঘটে, তবে তা সঠিকভাবে ক্যাচ করতে হবে যাতে অ্যাপ্লিকেশন ক্র্যাশ না করে এবং ব্যবহারকারীকে সঠিক রেসপন্স দেওয়া যায়।

KoaJS-এ ত্রুটি হ্যান্ডলিং করা হয় try...catch ব্লক এবং একটি কাস্টম Error Handling Middleware ব্যবহার করে। এই মিডলওয়্যারটি সমস্ত অ্যাসিনক্রোনাস ত্রুটির জন্য কাজ করবে এবং একটি কাস্টম রেসপন্স প্রদান করবে।


Async Error Handling এর জন্য কাস্টম Middleware তৈরি করা

১. Error Handling Middleware তৈরি করা

const Koa = require('koa');
const app = new Koa();

// Error Handling Middleware
app.use(async (ctx, next) => {
  try {
    // পরবর্তী মিডলওয়্যার কার্যকর করা
    await next();
  } catch (err) {
    // যদি ত্রুটি ঘটে, তাহলে এটি হ্যান্ডল করা হবে
    console.error('Error occurred:', err);
    
    // কাস্টম ত্রুটি রেসপন্স
    ctx.status = err.status || 500;  // ত্রুটি স্ট্যাটাস কোড
    ctx.body = {
      message: 'Something went wrong!',
      error: err.message
    };
  }
});

// একটি API রুট তৈরি করা যেটি ত্রুটি ঘটাবে
app.use(async (ctx) => {
  throw new Error('This is a simulated error!');
});

app.listen(3000, () => {
  console.log('Server running on http://localhost:3000');
});

এখানে, একটি কাস্টম Error Handling Middleware তৈরি করা হয়েছে যা সমস্ত অ্যাসিনক্রোনাস ত্রুটিকে ক্যাচ করবে। next() কল করার পরে যদি কোন ত্রুটি ঘটে, তবে তা catch ব্লকের মাধ্যমে হ্যান্ডল করা হবে এবং একটি কাস্টম ত্রুটি বার্তা সহ রেসপন্স পাঠানো হবে।

আউটপুট:

{
  message: "Something went wrong!",
  error: "This is a simulated error!"
}

২. অথেনটিকেশন এবং ডাটাবেস ত্রুটি হ্যান্ডলিং

KoaJS-এ অ্যাসিনক্রোনাস ত্রুটি হ্যান্ডলিংয়ের আরো একটি উদাহরণ হতে পারে, যখন আপনি একটি ডাটাবেস থেকে ডেটা ফেচ করার চেষ্টা করেন এবং ডাটাবেস কানেকশনটি ব্যর্থ হয়।

const Koa = require('koa');
const app = new Koa();

// Error Handling Middleware
app.use(async (ctx, next) => {
  try {
    await next();
  } catch (err) {
    ctx.status = err.status || 500;
    ctx.body = {
      message: 'Internal server error',
      error: err.message
    };
  }
});

// একটি রুট যা ডাটাবেস কানেকশন ত্রুটি তৈরি করবে
app.use(async (ctx) => {
  try {
    // ধরুন এখানে ডাটাবেস কানেকশন হচ্ছে
    throw new Error('Database connection failed!');
  } catch (err) {
    // ডাটাবেস ত্রুটি ঘটলে সেটি এখানে ক্যাচ করা হচ্ছে
    throw err;
  }
});

app.listen(3000, () => {
  console.log('Server running on http://localhost:3000');
});

এই কোডে ডাটাবেস কানেকশনে ত্রুটি ঘটে, যা কাস্টম মিডলওয়্যার দ্বারা হ্যান্ডল করা হচ্ছে।


৩. Async Error Handling এর জন্য Global Error Handler

KoaJS-এ গ্লোবাল ত্রুটি হ্যান্ডলার ব্যবহার করে আপনি সমস্ত অ্যাসিনক্রোনাস ত্রুটির জন্য একটি একক পদ্ধতি গ্রহণ করতে পারেন, যা আপনার অ্যাপ্লিকেশনের কোডের মধ্যে একক জায়গায় সব ত্রুটি হ্যান্ডলিংয়ের কাজ করবে।

const Koa = require('koa');
const app = new Koa();

// Global Error Handler Middleware
app.use(async (ctx, next) => {
  try {
    await next();
  } catch (err) {
    // সমস্ত ত্রুটি গ্লোবালভাবে হ্যান্ডল করা হবে
    console.error(err);
    ctx.status = 500;
    ctx.body = { message: 'An error occurred in the system.' };
  }
});

// API রুট যা ইচ্ছাকৃতভাবে ত্রুটি ঘটাবে
app.use(async (ctx) => {
  throw new Error('Unexpected error occurred!');
});

app.listen(3000, () => {
  console.log('Server running on http://localhost:3000');
});

এখানে, একটি গ্লোবাল ত্রুটি হ্যান্ডলার তৈরি করা হয়েছে, যা সমস্ত মিডলওয়্যারের মধ্যে ঘটে যাওয়া ত্রুটিগুলি হ্যান্ডল করবে।


KoaJS-এ Async Error Handling এর সুবিধা

  1. কেন্দ্রীভূত ত্রুটি হ্যান্ডলিং: আপনি একটি একক Error Handling Middleware ব্যবহার করে সমস্ত অ্যাসিনক্রোনাস ত্রুটি ক্যাচ এবং হ্যান্ডল করতে পারেন, যা কোডের রক্ষণাবেক্ষণ সহজ করে।
  2. কাস্টম রেসপন্স: ত্রুটির সময় কাস্টম রেসপন্স পাঠানো সম্ভব হয়, যেমন: ত্রুটি বার্তা, HTTP স্ট্যাটাস কোড ইত্যাদি।
  3. ত্রুটি লগিং: ত্রুটি ঘটলে, আপনি সেগুলিকে লগ করতে পারেন এবং ডিবাগিং সহজ করতে পারেন।
  4. পরিস্কার কোড: try...catch ব্লক ব্যবহার করার মাধ্যমে কোডের পড়াশোনা সহজ হয় এবং ত্রুটি হ্যান্ডলিং আরও সুষ্ঠু হয়।

সারাংশ

KoaJS-এ অ্যাসিনক্রোনাস ত্রুটি হ্যান্ডলিং একটি অত্যন্ত গুরুত্বপূর্ণ বিষয়, যা অ্যাপ্লিকেশন স্থিতিশীলতা নিশ্চিত করতে সহায়তা করে। try...catch ব্লক এবং কাস্টম Error Handling Middleware ব্যবহার করে অ্যাসিনক্রোনাস ত্রুটির ক্ষেত্রে কাস্টম রেসপন্স প্রদান এবং লগিং করা সম্ভব হয়। এতে ডেভেলপাররা অ্যাপ্লিকেশনের ত্রুটি পরিচালনা করতে সক্ষম হন এবং ব্যবহারকারীদের জন্য আরও ভাল অভিজ্ঞতা তৈরি করেন।

Content added By
Promotion

Are you sure to start over?

Loading...