Hotline: 0919 365 363; Email: daotao@r2s.edu.vn

Xử lý ngoại lệ trong Kotlin

Xử lý ngoại lệ trong Kotlin

Kiến thức hữu ích

Xử lý ngoại lệ trong Kotlin

Xử lý ngoại lệ trong Kotlin cũng tương tự như trong Java. Và chúng ta đều đã biết, ngoại lệ là những lỗi có thể phát sinh trong lúc thực thi. Chẳng hạn như đọc một file không còn tồn tại. Hoặc kết nối với một database không có sẵn.

Tuy nhiên, nếu một ngày nào đó người dùng nhập một ký tự, chương trình có thể đưa ra một ngoại lệ. Các ngoại lệ không phải lúc nào cũng xảy ra mà phụ thuộc vào thời điểm chương trình chạy. Ví dụ: chương trình nhập 2 số nguyên rồi tính tổng.

Do đó, việc xử lý ngoại lệ trong lúc lập trình đối với các lập trình viên là một điều vô cùng cần thiết để đảm bảo chương trình luôn trong trạng thái hoạt động tốt trong mọi tình huống.

Giới thiệu về xử lý ngoại lệ trong Kotlin

Xử lý ngoại lệ là một phần quan trọng trong bất kỳ ngôn ngữ lập trình nào, bao gồm Kotlin. Xử lý ngoại lệ là quá trình xử lý các tình huống bất thường, như các lỗi runtime hoặc các điều kiện không mong muốn trong quá trình thực thi chương trình. 

Trong Kotlin, xử lý ngoại lệ được thực hiện bằng cách sử dụng các khối try-catch. Khi một đoạn mã có thể gây ra ngoại lệ, ta đặt nó trong khối try. Nếu ngoại lệ xảy ra, chương trình sẽ nhảy tới khối catch tương ứng để xử lý ngoại lệ đó.

Kotlin cung cấp một số loại ngoại lệ được xác định sẵn,như `NullPointerException`, `ArithmeticException`, `IndexOutOfBoundsException`, và nhiều loại khác. Ngoài ra, ta cũng có thể tự định nghĩa các loại ngoại lệ riêng của mình.

Để đảm bảo rằng các tài nguyên được giải phóng hoặc các hành động cuối cùng được thực hiện dù có ngoại lệ hay không, ta có thể sử dụng khối finally. Điều này đảm bảo rằng các tài nguyên được giải phóng hoặc các hành động cuối cùng được thực hiện dù có ngoại lệ hay không.

Xử lý ngoại lệ trong Kotlin là gì?

Xử lý ngoại lệ trong kotlin

Xử lý ngoại lệ trong Kotlin được thực hiện bằng cơ chế try/catch/finally tương tự như trong các ngôn ngữ lập trình khác. Các lệnh có khả năng ném ra ngoại lệ được đặt trong khối try, và các khối catch được sử dụng để xử lý các ngoại lệ tương ứng. Khối finally được sử dụng để chứa mã được thực thi bất kể có ngoại lệ xảy ra hay không.

Cú pháp của xử lý ngoại lệ trong Kotlin

Cú pháp sử dụng các khối try-catch-finally, với cú pháp như sau:

try {
    //Xử lý
} catch (e: ExceptionName) {
    //Xử lý ngoại lệ
} finally {
    //Giải phóng tài nguyên
}

Để ném ra ngoại lệ chúng ta sẽ sử dụng throw. Tuy nhiên để bắt ngoại lệ, chúng ta sử dụng try…catch như phía trên. Đối với finally có thể bỏ qua nó khi viết try…catch và những câu lệnh bên trong nó luôn luôn được thực thi bất kể khi có xảy ra ngoại lệ hay không.

Sau đây là một số exception thông dụng thường được dùng

  • ArithmeticException: Ngoại lệ có liên quan đến tính toán số học
  • NumberFormatException: Ngoại lệ có liên quan đến định dạng số
  • IllegalArgumentException: Ngoại lệ có liên quan đến đối số không phù hợp
  • Exception: Ngoại lệ tổng quát nhất

Khi xử lý ngoại lệ, chúng ta có thể chỉ định cụ thể từng ngoại lệ trên hoặc là sử dụng Exception.

Ví dụ của xử lý ngoại lệ trong Kotlin

fun main(args: Array<String>) {
   try {
      val age:Int = 12
      val name:String = "Lê Hồng Kỳ"
      name.toInt()
   } catch(e:Exception) {
      e.printStackTrace()
   } finally {
      println("Xử lý ngoại lệ trong Kotlin")
   }
}

Khi chạy ví dụ phía trên, chương trình sẽ phát sinh một ngoại lệ tại dòng name.toInt() vì không thể chuyển một chuỗi sang dạng số int được. Với chương trình phía trên, nếu không xử lý ngoại lệ thì chương trình sẽ phát sinh lỗi và kết thúc bất thường.

Kết luận

Khi lập trình, các lập trình viên cần phải lưu ý sẽ phải đặt những đoạn code có thể phát sinh lỗi thực thi vào trong try…catch nếu không muốn chương trình của mình có thể bị kết thúc bất thường lúc chạy.

Trong một khối try…catch, chúng ta cũng có thể lòng nhiều catch. Điều này cũng đồng nghĩa với việc, câu lệnh nào phát sinh ra lỗi trước sẽ vào catch tương ứng.

fun main(args: Array<String>) {
  try {
     var num: Int
     var tmp = "Gia Su Tin Hoc" 
     num = tmp.toInt()

     var result = num / 0
  } catch (nfe: NumberFormatException) {
     nfe.printStackTrace()
     println("Khong phai so")
  } catch (ae: ArithmeticException) {
     ae.printStackTrace()
     println("\nKhong chia duoc cho 0")
  }
}

Khi chạy đoạn mã code trên, chương trình sẽ phát sinh ngoại lệ NumberFormatException vì không thể chuyển một chuỗi “Gia Su Tin Hoc” thành một số

xử lý ngoại lệ trong kotlin
Xử lý ngoại lệ trong kotlin

Như các bạn đã thấy, mặc dù chúng tôi sử dụng 2 ngoại lệ khi viết try…catch. Tuy nhiên khi chạy chương trình thì câu lệnh name.toInt() phát sinh lỗi nên catch (nfe: NumberFormatException) sẽ được thực hiện.

Cũng đoạn mã code trên và được sửa lại như bên phía dưới thì khi chạy chương trình thì ngoại lệ sẽ vào catch (ae: ArithmeticException) vì không thể chia cho số 0.

fun main(args: Array<String>) {
  try {
    var num: Int
    var tmp = "10" 

    num = tmp.toInt()
    var result = num / 0
  } catch (nfe: NumberFormatException) {
    nfe.printStackTrace()
    println("Khong phai so")
  } catch (ae: ArithmeticException) {
    ae.printStackTrace()
    println("\nKhong chia duoc cho 0")
  }
}

Phát sinh ngoại lệ

Phát sinh ngoại lệ

Tổng kết

Như vậy, qua bài viết về bài viết phía trên đây, R2S chúng tôi đã giúp bạn hiểu được về định nghĩa của xử lý ngoại lệ trong Kotlin là gì?, Cú pháp, Ví dụ.

Đừng quên bỏ lỡ bất cứ bài viết nào của chúng tôi để có thể học thêm nhiều kiến thức hữu ích về lập trình kotlin nhé.

Hãy đến với website của R2S để có thể tìm hiểu sâu hơn vào lập trình và công nghệ thông tin để có thêm nhiều kiến thức về nó hơn nhé. 

Bài viết gốc được đăng tải tại giasutinhoc.vn

Alert: You are not allowed to copy content or view source !!