উদাহরণ সহ Exception Handling

Exception Handling এবং @ControllerAdvice - স্প্রিং এমভিসি (Spring MVC) - Java Technologies

293

Spring MVC তে Exception Handling হল একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা HTTP রিকোয়েস্ট প্রক্রিয়াকরণের সময় ঘটে এমন ত্রুটিগুলিকে সঠিকভাবে হ্যান্ডল করার সুযোগ প্রদান করে। Spring MVC তে ত্রুটির জন্য বিভিন্ন ধরনের কৌশল ব্যবহার করা যেতে পারে, যেমন:

  1. @ExceptionHandler অ্যানোটেশন: কন্ট্রোলারের মধ্যে স্পেসিফিক এক্সসেপশন হ্যান্ডলিং।
  2. @ControllerAdvice: গ্লোবাল এক্সসেপশন হ্যান্ডলিং।
  3. Custom Error Pages: কাস্টম ত্রুটি পৃষ্ঠার মাধ্যমে ত্রুটির প্রতিবেদন।

1. @ExceptionHandler এর মাধ্যমে Exception Handling

Spring MVC তে @ExceptionHandler অ্যানোটেশন ব্যবহার করে কন্ট্রোলারের মধ্যে নির্দিষ্ট এক্সসেপশন হ্যান্ডল করা যেতে পারে।

Step 1: Controller তৈরি

এখানে আমরা একটি কন্ট্রোলার তৈরি করব যা কিছু কার্যকলাপ প্রক্রিয়া করবে, এবং একটি কাস্টম এক্সসেপশন ছুড়ে দিবে।

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ExceptionHandler;

@Controller
public class HomeController {

    @GetMapping("/home")
    public String homePage(@RequestParam(value = "name", defaultValue = "") String name) {
        if (name.isEmpty()) {
            throw new IllegalArgumentException("Name parameter is required!"); // যদি name না থাকে, ত্রুটি ছোড়া হবে
        }
        return "home"; // সফল হলে home.jsp ভিউ রিটার্ন করবে
    }

    @ExceptionHandler(IllegalArgumentException.class) // এই এক্সসেপশনটি কন্ট্রোলার মেথডের মধ্যে হ্যান্ডল হবে
    public String handleIllegalArgumentException(IllegalArgumentException ex) {
        // ত্রুটি হলে কাস্টম ত্রুটি পৃষ্ঠায় রিডাইরেক্ট করা হবে
        return "error"; // error.jsp পৃষ্ঠায় রিডাইরেক্ট হবে
    }
}
ব্যাখ্যা:
  • homePage() মেথডে name প্যারামিটার যদি ফাঁকা থাকে, তাহলে একটি IllegalArgumentException ছোড়া হবে।
  • @ExceptionHandler(IllegalArgumentException.class) এই অ্যানোটেশনটি কন্ট্রোলারের মধ্যে সেই ত্রুটির জন্য একটি হ্যান্ডলার মেথড চিহ্নিত করে।

Step 2: View তৈরি

এখানে একটি কাস্টম ত্রুটি পৃষ্ঠার (error.jsp) উদাহরণ দেওয়া হল, যা এক্সসেপশন ঘটলে ব্যবহারকারীর কাছে প্রদর্শিত হবে।

error.jsp:

<!DOCTYPE html>
<html>
<head>
    <title>Error Page</title>
</head>
<body>
    <h1>An error occurred: ${exception.message}</h1>
</body>
</html>

এটি কাস্টম error.jsp পৃষ্ঠা যা IllegalArgumentException এর ত্রুটি মেসেজ দেখাবে।


2. @ControllerAdvice এর মাধ্যমে Global Exception Handling

@ControllerAdvice ব্যবহার করে আপনি গ্লোবালভাবে সমস্ত কন্ট্রোলারের জন্য এক্সসেপশন হ্যান্ডলিং করতে পারেন। এটি Spring MVC অ্যাপ্লিকেশনে একাধিক কন্ট্রোলার এবং মেথডের জন্য এক্সসেপশন হ্যান্ডলিং সহজ করে তোলে।

Step 1: @ControllerAdvice কনফিগারেশন

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(IllegalArgumentException.class)
    public String handleIllegalArgumentException(IllegalArgumentException ex) {
        // সমস্ত কন্ট্রোলারের জন্য এক্সসেপশন হ্যান্ডলিং
        return "error"; // error.jsp পৃষ্ঠায় রিডাইরেক্ট করা হবে
    }

    // আপনি আরও এক্সসেপশন হ্যান্ডলিং মেথড এখানে যোগ করতে পারেন
}
ব্যাখ্যা:
  • @ControllerAdvice: এই অ্যানোটেশনটি সমস্ত কন্ট্রোলারের জন্য গ্লোবাল এক্সসেপশন হ্যান্ডলিং সক্রিয় করে।
  • @ExceptionHandler: এক্সসেপশন টাইপের ভিত্তিতে আপনি একাধিক এক্সসেপশন হ্যান্ডল করতে পারেন।

Step 2: View তৈরি

error.jsp ফাইলটি আগেই তৈরি করা হয়েছে, তাই এখানেও ব্যবহার করা হবে।


3. Custom Error Pages

Spring MVC তে আপনি কাস্টম Error Pages তৈরি করতে পারেন যা HTTP স্ট্যাটাস কোড অনুযায়ী প্রদর্শিত হবে, যেমন 404 (Page Not Found), 500 (Internal Server Error) ইত্যাদি।

Step 1: Custom Error Page কনফিগারেশন

Spring MVC তে web.xml বা Java Config এর মাধ্যমে কাস্টম ত্রুটি পৃষ্ঠা কনফিগার করা যায়।

Java-based configuration (WebConfig.java):

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        // View Resolver কনফিগারেশন
        registry.jsp().prefix("/WEB-INF/views/").suffix(".jsp");
    }

    // Custom Error Page কনফিগারেশন
    @Override
    public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) {
        exceptionResolvers.add(new DefaultHandlerExceptionResolver());
    }
}

Step 2: Custom Error Pages (error404.jsp, error500.jsp)

এখানে কিছু কাস্টম ত্রুটি পৃষ্ঠার উদাহরণ:

error404.jsp:

<!DOCTYPE html>
<html>
<head>
    <title>Page Not Found</title>
</head>
<body>
    <h1>Error 404: Page Not Found</h1>
    <p>The page you are looking for might have been moved or deleted.</p>
</body>
</html>

error500.jsp:

<!DOCTYPE html>
<html>
<head>
    <title>Internal Server Error</title>
</head>
<body>
    <h1>Error 500: Internal Server Error</h1>
    <p>There was an error processing your request. Please try again later.</p>
</body>
</html>

Conclusion:

Spring MVC তে Exception Handling খুবই গুরুত্বপূর্ণ। এটি ডেভেলপারদের প্রক্রিয়াকরণের সময় ত্রুটি ম্যানেজমেন্ট সহজ এবং কার্যকরীভাবে করার সুযোগ দেয়। Spring MVC-তে তিনটি প্রধান কৌশল রয়েছে:

  1. @ExceptionHandler - নির্দিষ্ট কন্ট্রোলারের জন্য এক্সসেপশন হ্যান্ডলিং।
  2. @ControllerAdvice - গ্লোবাল এক্সসেপশন হ্যান্ডলিং।
  3. Custom Error Pages - কাস্টম ত্রুটি পৃষ্ঠাগুলির মাধ্যমে HTTP ত্রুটির জন্য উপযুক্ত পেজ দেখানো।

এই কৌশলগুলোর মাধ্যমে আপনি Spring MVC অ্যাপ্লিকেশনে ত্রুটি পরিচালনা করার ক্ষমতা অর্জন করতে পারেন এবং ব্যবহারকারীর জন্য একটি সুন্দর, কার্যকরী ত্রুটি সিস্টেম তৈরি করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...