Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Android

โยนข้อยกเว้นที่กำหนดเองใน Kotlin


ข้อยกเว้นเป็นส่วนสำคัญของภาษาการเขียนโปรแกรมใดๆ มันป้องกันโค้ดของเราไม่ให้สร้างเอาต์พุตที่ไม่ถูกต้องขณะใช้งานจริง

แนวคิดของข้อยกเว้นใน Kotlin เหมือนกับใน Java มาก ข้อยกเว้นทั้งหมดใน Kotlin เป็นลูกหลานของ Throwable ระดับ. ใน Kotlin นักพัฒนามีสิทธิ์สร้างข้อยกเว้นที่กำหนดเองได้

ข้อยกเว้นที่กำหนดเองเป็นส่วนหนึ่งของข้อยกเว้นที่ไม่ได้ตรวจสอบ ซึ่งหมายความว่าจะถูกโยนทิ้งเมื่อรันไทม์

ก่อนที่จะเข้าสู่ข้อยกเว้นที่กำหนดเองใน Kotlin มาดูข้อยกเว้นที่ตรวจสอบแล้วและไม่ได้ตรวจสอบ

ตรวจสอบข้อยกเว้นแล้ว

ข้อยกเว้นที่ตรวจสอบคือข้อยกเว้นที่ได้รับการตรวจสอบ ณ เวลารวบรวม ในตัวอย่างต่อไปนี้ เราได้สร้างข้อยกเว้นที่ตรวจสอบแล้ว 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 Exception เราสามารถพิจารณา ArithmeticException, NumberFormatException ใดๆ ว่าเป็นตัวอย่างของ uncheckedexceptions

ตัวอย่าง

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)

ข้อยกเว้นที่กำหนดเองใน Kotlin

เราจะสร้างข้อยกเว้นที่กำหนดเองโดยใช้ตัวอย่างง่ายๆ ในตัวอย่างนี้ เรากำลังประกาศตัวแปรและตรวจสอบว่าค่าตัวแปรนั้นน้อยกว่า 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)