Custom Exception তৈরি এবং হ্যান্ডল করা

iBATIS এর Exception Handling - আইবাটিস (iBATIS) - Java Technologies

371

iBATIS (MyBatis) একটি SQL ম্যাপিং ফ্রেমওয়ার্ক যা ডেটাবেস অপারেশন পরিচালনা করতে সাহায্য করে। যখন ডেটাবেস অপারেশনের মধ্যে কোনো ত্রুটি ঘটে, তখন আপনি কাস্টম এক্সসেপশন তৈরি করতে পারেন, যা সুনির্দিষ্ট ত্রুটির বার্তা প্রদান করবে এবং প্রয়োজনে সিস্টেমের পরিচালনা সহজ করবে।

এখানে Custom Exception তৈরি এবং exception handling এর কিছু সাধারণ পদ্ধতি এবং উদাহরণ দেওয়া হলো যা আপনি iBATIS (MyBatis) এর সাথে ব্যবহার করতে পারেন।


1. Custom Exception তৈরি করা

MyBatis বা যেকোনো জাভা অ্যাপ্লিকেশনেও আপনি custom exceptions তৈরি করতে পারেন যা ডেটাবেস অপারেশনের সময় সাধারণ বা বিশেষ ত্রুটি সম্পর্কে বিস্তারিত বার্তা প্রদান করবে।

Step 1: Create a Custom Exception Class

public class DatabaseException extends RuntimeException {

    // Constructor that accepts a message
    public DatabaseException(String message) {
        super(message);
    }

    // Constructor that accepts a message and a cause
    public DatabaseException(String message, Throwable cause) {
        super(message, cause);
    }
}
  • Explanation:
    • এই কাস্টম এক্সসেপশনটি RuntimeException থেকে উত্তরাধিকার লাভ করছে এবং দুইটি কনস্ট্রাক্টর সরবরাহ করেছে। একটিতে শুধুমাত্র বার্তা (message) থাকবে, অন্যটিতে বার্তা এবং ত্রুটির কারণ (cause) থাকবে।
    • এটি ডেটাবেস সম্পর্কিত ত্রুটির জন্য ব্যবহৃত হবে।

2. Custom Exception হ্যান্ডল করা

MyBatis ব্যবহারের সময়, কিছু নির্দিষ্ট ডেটাবেস অপারেশনে যেমন SQLIntegrityConstraintViolationException, SQLException, ইত্যাদির মাধ্যমে ত্রুটি ঘটতে পারে। এই ত্রুটিগুলিকে কাস্টম এক্সসেপশনে রূপান্তরিত করে ব্যবহার করা যেতে পারে।

Step 2: Throw Custom Exception in MyBatis Mapper

MyBatis মাপার ফাইলে যখন কোনো ত্রুটি ঘটবে, তখন আপনি আপনার কাস্টম এক্সসেপশনটি থ্রো করতে পারেন।

import org.apache.ibatis.exceptions.PersistenceException;

public class EmployeeMapperImpl implements EmployeeMapper {

    @Override
    public void insertEmployee(Employee employee) {
        try {
            // SQL Query execution logic here (using MyBatis)
            session.insert("com.example.mapper.EmployeeMapper.insertEmployee", employee);
        } catch (PersistenceException e) {
            // If any exception occurs, throw custom exception with a message
            throw new DatabaseException("Error occurred while inserting employee", e);
        }
    }
}
  • Explanation:
    • এখানে PersistenceException এর মধ্যে আসা সমস্ত ত্রুটির জন্য আমরা কাস্টম DatabaseException থ্রো করেছি।
    • এইভাবে, MyBatis এর মধ্যে আসা সকল এক্সসেপশনকে আমরা কাস্টম এক্সসেপশনে কনভার্ট করতে পারি।

3. Exception Handling in Mapper Interface

আপনি যদি কাস্টম এক্সসেপশন হ্যান্ডলিং ম্যাপারের ইন্টারফেসে করতে চান, তাহলে try-catch ব্লক ব্যবহার করতে পারেন।

Step 3: Define a Mapper Interface

public interface EmployeeMapper {

    void insertEmployee(Employee employee) throws DatabaseException;
}
  • Explanation:
    • এখানে insertEmployee মেথডে DatabaseException থ্রো করা হয়েছে। এর মাধ্যমে, আপনি এই এক্সসেপশনকে ওয়েব কন্ট্রোলার বা অন্য কোথাও ক্যাচ করতে পারবেন।

4. Handling Exceptions in Service Layer

MyBatis মেপারের মাধ্যমে ডেটাবেস অপারেশন পরিচালনা করার পর, আপনি আপনার Service Layer-এ কাস্টম এক্সসেপশন হ্যান্ডল করতে পারেন।

Step 4: Handle Custom Exception in Service Layer

@Service
public class EmployeeService {

    @Autowired
    private EmployeeMapper employeeMapper;

    public void addEmployee(Employee employee) {
        try {
            employeeMapper.insertEmployee(employee);
        } catch (DatabaseException e) {
            // Handle custom exception
            System.out.println("Custom Exception Caught: " + e.getMessage());
            // Optionally, rethrow the exception or perform other actions
        }
    }
}
  • Explanation:
    • এখানে, DatabaseException থ্রো হলে, Service Layer এর মধ্যে সেই এক্সসেপশন ক্যাচ করা হচ্ছে। এখানে আপনি ত্রুটির বার্তা লোগিং বা পুনরায় থ্রো করা সহ অন্যান্য ক্রিয়া করতে পারেন।

5. Global Exception Handling with Spring (@ControllerAdvice)

Spring Framework ব্যবহার করে আপনি গ্লোবাল এক্সসেপশন হ্যান্ডলিং করতে পারেন যেখানে সমস্ত কাস্টম এক্সসেপশনগুলো এক জায়গায় হ্যান্ডল করা হবে।

Step 5: Global Exception Handler with @ControllerAdvice

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ControllerAdvice;

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(DatabaseException.class)
    public ResponseEntity<String> handleDatabaseException(DatabaseException e) {
        return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
    }

    @ExceptionHandler(Exception.class)
    public ResponseEntity<String> handleGeneralException(Exception e) {
        return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
    }
}
  • Explanation:
    • @ControllerAdvice অ্যানোটেশনটি Spring Framework-এ গ্লোবাল এক্সসেপশন হ্যান্ডলিংয়ের জন্য ব্যবহৃত হয়। এতে handleDatabaseException মেথডে কাস্টম এক্সসেপশন DatabaseException হ্যান্ডল করা হচ্ছে।

6. Example of Using Custom Exception in Spring Boot Application

@RestController
@RequestMapping("/employee")
public class EmployeeController {

    @Autowired
    private EmployeeService employeeService;

    @PostMapping("/add")
    public ResponseEntity<String> addEmployee(@RequestBody Employee employee) {
        try {
            employeeService.addEmployee(employee);
            return new ResponseEntity<>("Employee added successfully", HttpStatus.CREATED);
        } catch (DatabaseException e) {
            return new ResponseEntity<>("Error: " + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
        }
    }
}

Explanation:

  • এখানে addEmployee API এর মধ্যে কাস্টম DatabaseException হ্যান্ডলিং করা হচ্ছে, যাতে আপনি HTTP 500 এর মাধ্যমে ত্রুটির বার্তা ব্যবহারকারীকে ফিরিয়ে দিতে পারেন।

iBATIS (MyBatis) তে কাস্টম এক্সসেপশন তৈরি এবং হ্যান্ডল করা খুবই সহজ এবং কার্যকর। আপনি Programmatic Exception Handling বা Declarative Exception Handling ব্যবহারের মাধ্যমে আপনার ডেটাবেস অপারেশনের ত্রুটিগুলি সঠিকভাবে পরিচালনা করতে পারেন।

  • Custom Exception: আপনি নিজের ত্রুটির ধরনের জন্য কাস্টম এক্সসেপশন তৈরি করতে পারেন যা ডেটাবেস অপারেশন বা অন্যান্য লজিকের সময় সুনির্দিষ্ট ত্রুটি বার্তা প্রদান করবে।
  • Exception Handling: কাস্টম এক্সসেপশন থ্রো করার পর আপনি try-catch ব্লক বা গ্লোবাল এক্সসেপশন হ্যান্ডলার ব্যবহার করে এগুলি হ্যান্ডল করতে পারেন।
  • Spring Integration: Spring Framework ব্যবহার করে আপনি গ্লোবাল এক্সসেপশন হ্যান্ডলিং করতে পারেন এবং এটি কার্যকরীভাবে অ্যাপ্লিকেশনকে আরও স্থিতিশীল করে তোলে।

এটি একটি প্রাথমিক গাইড যা iBATIS (MyBatis) তে কাস্টম এক্সসেপশন তৈরি এবং হ্যান্ডল করার জন্য ব্যবহৃত হতে পারে।

Content added By
Promotion

Are you sure to start over?

Loading...