ব্যতিক্রম যেকোনো প্রোগ্রামিং ভাষার একটি গুরুত্বপূর্ণ দিক। এটি রানটাইমে ভুল আউটপুট তৈরি করা থেকে আমাদের কোডকে বাধা দেয়।
কোটলিনে ব্যতিক্রম ধারণাটি জাভাতে যেমন রয়েছে তেমনই। কোটলিনের সব ব্যতিক্রম হল থ্রোয়েবল-এর বংশধর ক্লাস কোটলিনে, ডেভেলপারদের নিজস্ব কাস্টম ব্যতিক্রম তৈরি করার বিশেষ সুযোগ রয়েছে।
কাস্টম ব্যতিক্রমগুলি হল অচেক করা ব্যতিক্রমগুলির একটি অংশ৷ যার মানে তারা রানটাইমে নিক্ষেপ করা হবে।
কোটলিনে কাস্টম ব্যতিক্রমগুলিতে যাওয়ার আগে, আসুন চেক করা এবং চেক না করা ব্যতিক্রমগুলি দেখে নেওয়া যাক৷
চেক করা ব্যতিক্রমগুলি
চেক করা ব্যতিক্রমগুলি হল যা কম্পাইলের সময় চেক করা হয়। নিম্নলিখিত উদাহরণে, আমরা একটি চেক করা ব্যতিক্রম তৈরি করেছি। 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)
অচেক করা ব্যতিক্রমগুলি
আনচেক করা ব্যতিক্রমগুলি হল যেগুলি কম্পাইলের সময় চেক করা হয় না; বরং সেগুলি রানটাইমে নিক্ষেপ করা হবে। নিম্নলিখিত উদাহরণে, আমরা একটি আনচেকড ব্যতিক্রম তৈরি করব। আমরা পাটিগণিত এক্সেপশন, নম্বরফরম্যাট এক্সেপশনের যেকোন একটিকে চেক না করা ব্যতিক্রমের উদাহরণ হিসেবে বিবেচনা করতে পারি।
উদাহরণ
fun main(args: Array) { try { val myVar:Int = 12; val v:String = "Tutorialspoint.com"; v.toInt(); } catch(e:Exception) { e.printStackTrace(); } finally { println("Exception Handeling in Kotlin"); } }
আউটপুট
একবার আমরা উপরের কোডটি কার্যকর করলে, এটি নিম্নলিখিত আউটপুট −
তৈরি করবে$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(NumberFormatExc eption.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang.Integer.parseInt(Integer.java:615) at MainKt.main(main.kt:5)
কোটলিনে কাস্টম ব্যতিক্রম
আমরা একটি খুব সাধারণ উদাহরণ ব্যবহার করে আমাদের নিজস্ব কাস্টম ব্যতিক্রম তৈরি করব। এই উদাহরণে, আমরা একটি ভেরিয়েবল ঘোষণা করছি এবং সেই ভেরিয়েবলের মান 50 এর কম কিনা তা পরীক্ষা করছি। ফলাফলের উপর নির্ভর করে, আমরা Kotlin বিল্ট-ইন কার্যকারিতা ব্যবহার করে একটি কাস্টম ব্যতিক্রম নিক্ষেপ করব।
উদাহরণ
fun main(args: Array) { val sampleNumber:Int; sampleNumber = 100; if(sampleNumber > 50) { //throwing custom exception instead of other checked Exception throw myCustomException("Invalid Inputs - Please enter a correct number") } else { println("Welcome !! you have entered a correct value") } } //declaring custom exception class 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)