Kotlin exception
Các class exception
Tất cả các class exception trong Kotlin đều thừa kế từ lớp Throwable
. Mọi exception đều có một message, stack trace và một optional cause
Để throw một exception object, ta sử dụng throw
Và để catch một exception, ta sử dụng try
Có thể không có hoặc nhiều khối catch
. Khối finally
có thể được bỏ qua. Tuy nhiên, ít nhất phải có 1 khối catch
hoặc finally
xuất hiện.
Try là một biểu thức
try
là một biểu thức. Bởi vậy, ta có thể trả về một giá trị
Giá trị trả về của try
hoặc là biểu thức cuối cùng trong khối try
hoặc là biểu thức cuối cùng trong khối catch
hoặc các khối catch
. Nội dung khối finally
không ảnh hưởng đến kết quả của biểu thức
Checked exception
Kotlin không có checked exception. Có nhiều lý do cho việc này. Hãy xem ví dụ sau:
Signature của hàm cho ta biết điều gì? Mỗi lần append một string, chúng ta phải catch các IOException
có thể xảy ra. Bởi vì nó có thể thực hiện việc đọc ghi. Bởi vậy, ta phải catch khi gọi hàm append
như sau:
Kiểu Nothing
throw
là một biểu thức trong Kotlin, bởi vậy chúng ta có thể sử dụng throw
như một phần của toán tử elvis:
Kiểu dữ liệu của biểu thức throw
là một kiểu đặc biệt: Nothing
. Kiểu dữ liệu này không có giá trị và thường được dùng để đánh dấu các vị trí trong code mà code không bao giờ có thể chạy tới được. Với code của bạn, bạn có thể sử dụng Nothing
để xác định các function mà không bao giờ trả về giá trị gì:
Khi bạn gọi function này, compiler sẽ biết rằng việc thực thi không thể tiếp tục sau khi function này được gọi