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)