Computer >> Máy Tính >  >> Lập trình >> Android

Ném ngoại lệ tùy chỉnh trong Kotlin

Ngoại lệ là một khía cạnh quan trọng của bất kỳ ngôn ngữ lập trình nào. Nó ngăn mã của bạn tạo ra đầu ra không chính xác trong thời gian chạy.

Khái niệm về ngoại lệ trong Kotlin rất giống với trong Java. Tất cả các trường hợp ngoại lệ trong Kotlin đều là hậu duệ của Throwable lớp. Trong Kotlin, các nhà phát triển có đặc quyền tạo Ngoại lệ tùy chỉnh của riêng họ.

Ngoại lệ tùy chỉnh là một phần của ngoại lệ không được chọn có nghĩa là chúng sẽ được ném vào thời gian chạy.

Trước khi đi vào các trường hợp ngoại lệ tùy chỉnh trong Kotlin, hãy xem các trường hợp ngoại lệ đã kiểm tra và bỏ chọn.

Ngoại lệ đã Kiểm tra

Các ngoại lệ được kiểm tra là những ngoại lệ được kiểm tra tại thời điểm biên dịch. Trong ví dụ dưới đây, chúng tôi đã tạo một ngoại lệ đã được kiểm tra. FileNotFoundException hoặc IOException là một ngoại lệ đã được kiểm tra.

Ví dụ

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();
   }
}

Đầu ra

Khi bạn thực thi đoạn mã trên, nó sẽ tạo ra kết quả sau. Bạn có thể thấy rằng trong khi biên dịch, chúng tôi đã kiểm tra ngoại lệ làm đầu ra.

$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)

Ngoại lệ bỏ chọn

Các ngoại lệ không được kiểm tra là những ngoại lệ không được kiểm tra tại thời điểm biên dịch; thay vào đó chúng sẽ được ném vào thời gian chạy. Trong ví dụ sau, chúng tôi sẽ tạo một Ngoại lệ Không được Kiểm tra. Chúng ta có thể coi bất kỳ ArithmeticException, NumberFormatException nào là ví dụ về các ngoại lệ không được kiểm tra.

Ví dụ

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");
   }
}

Đầu ra

Khi chúng tôi thực thi đoạn mã trên, nó sẽ tạo ra đầu ra sau -

$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)

Tùy chỉnh ngoại lệ trong Kotlin

Chúng tôi sẽ tạo ngoại lệ tùy chỉnh của riêng mình bằng cách sử dụng một ví dụ rất đơn giản. Trong ví dụ này, chúng tôi đang khai báo một biến và kiểm tra xem giá trị của biến đó có nhỏ hơn 50 hay không. Tùy thuộc vào kết quả, chúng tôi sẽ đưa ra một ngoại lệ tùy chỉnh bằng cách sử dụng chức năng tích hợp của Kotlin.

Ví dụ

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)

Đầu ra

Khi chúng tôi thực thi mã này, nó sẽ mang lại kết quả sau. Bạn có thể thấy rằng chúng tôi đang ném ngoại lệ tùy chỉnh của mình cùng với thông báo đã chuyển.

$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)