কম্পিউটার টিউটোরিয়াল

কোটলিনে কাস্টম এক্সেপশন থ্রো করা

ওভারভিউ

এক্সেপশন (Exception) যেকোনো প্রোগ্রামিং ভাষার একটি গুরুত্বপূর্ণ দিক। এটি আমাদের কোডকে রানটাইমে ভুল আউটপুট দিতে বাধা দেয়।

কোটলিনে এক্সেপশনের ধারণা জাভার মতোই। কোটলিনের সব এক্সেপশন Throwable ক্লাসের উতপন্ন। কোটলিনে, ডেভেলপাররা তাদের নিজস্ব কাস্টম এক্সেপশন তৈরি করার সুবিধা পায়।

কাস্টম এক্সেপশনগুলি unchecked exceptions-এর অংশ, অর্থাৎ সেগুলো রানটাইমে থ্রো করা হয়।

Checked Exceptions (চেকড এক্সেপশন)

চেকড এক্সেপশনগুলো কম্পাইল টাইমে চেক করা হয়। নিচের উদাহরণে, আমরা একটি চেকড এক্সেপশন তৈরি করেছি। FileNotFoundException বা IOException হল চেকড এক্সেপশন।

উদাহরণ

import java.io.File
import java.io.InputStream

fun main(args: Array<String>) {
    try {
        val inputStream: InputStream = File("Hello.txt").inputStream()
    } catch(e: Exception) {
        e.printStackTrace()
    }
}

আউটপুট

$kotlinc -nowarn main.kt -include-runtime -d main.jar
$java -Xmx128M -Xms16M -jar main.jar
java.io.FileNotFoundException: Hello.txt (No such file or directory)
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(FileInputStream.java:195)
    at java.io.FileInputStream.(FileInputStream.java:138)
    at MainKt.main(main.kt:6)

Unchecked Exceptions (আনচেকড এক্সেপশন)

আনচেকড এক্সেপশনগুলো কম্পাইল টাইমে চেক করা হয় না; বরং সেগুলো রানটাইমে থ্রো করা হয়। নিচের উদাহরণে, আমরা একটি আনচেকড এক্সেপশন তৈরি করব। ArithmeticException, NumberFormatException ইত্যাদি আনচেকড এক্সেপশনের উদাহরণ।

উদাহরণ

fun main(args: Array) {
    try {
        val myVar: Int = 12
        val v: String = "Tutorialspoint.com"
        v.toInt()
    } catch(e: Exception) {
        e.printStackTrace()
    } finally {
        println("কোটলিনে এক্সেপশন হ্যান্ডলিং")
    }
}

আউটপুট

$kotlinc -nowarn main.kt -include-runtime -d main.jar
$java -Xmx128M -Xms16M -jar main.jar
Exception Handeling in Kotlin
java.lang.NumberFormatException: For input string: "Tutorialspoint.com"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:580)
    at java.lang.Integer.parseInt(Integer.java:615)
    at MainKt.main(main.kt:5)

কোটলিনে কাস্টম এক্সেপশন

আমরা একটি খুব সহজ উদাহরণ ব্যবহার করে নিজস্ব কাস্টম এক্সেপশন তৈরি করব। এই উদাহরণে, আমরা একটি ভেরিয়েবল ঘোষণা করব এবং চেক করব যে ভেরিয়েবলের মান ৫০-এর চেয়ে কম কিনা। ফলাফলের উপর ভিত্তি করে, আমরা কোটলিন বিল্ট-ইন ফাংশনালিটি ব্যবহার করে একটি কাস্টম এক্সেপশন থ্রো করব।

উদাহরণ

fun main(args: Array) {
    val sampleNumber: Int
    sampleNumber = 100
    if (sampleNumber > 50) {
        // অন্যান্য চেকড এক্সেপশনের বদলে কাস্টম এক্সেপশন থ্রো করা
        throw myCustomException("অবৈধ ইনপুট - দয়া করে সঠিক নম্বর দিন")
    } else {
        println("স্বাগতম !! আপনি সঠিক মান দিয়েছেন")
    }
}

// কাস্টম এক্সেপশন ক্লাস ঘোষণা
class myCustomException(message: String) : Exception(message)

আউটপুট

এই কোডটি এক্সিকিউট করলে নিচের আউটপুট দেবে। আপনি দেখতে পাবেন যে আমরা পাস করা মেসেজ সহ আমাদের কাস্টম এক্সেপশন থ্রো করছি।

$kotlinc -nowarn main.kt -include-runtime -d main.jar
$java -Xmx128M -Xms16M -jar main.jar
Exception in thread "main" myCustomException: Invalid Inputs - Please enter a correct number
    at MainKt.main(main.kt:7)
  1. জাভাতে স্ট্যাটিক ব্লক থেকে এক্সেপশন কীভাবে থ্রো করবেন?

  2. জাভাতে কাস্টম এক্সেপশন তৈরি করা

  3. পাইথনে ম্যানুয়ালি এক্সসেপশন থ্রো/রেইজ করা

  4. রুবিতে কাস্টোম এক্সেপশন মাস্টার করুন: ধাপে ধাপে গাইড