Chào mừng các bạn đã đến với bài học Java số 40, bài học về Exception (phần tiếp theo). Đây là bài học trong chuỗi bài về lập trình ngôn ngữ Java của Yellow Code Books.
Mình thông báo cho các bạn biết rằng đây là bài viết cuối cùng của mình về “series” Exception này. Như vậy nhìn lại chúng ta có các bài viết về Exception như sau.
– Làm quen với Exception – Đây là bài học mở đầu về Exception. Bài học giúp cho bạn bắt đầu tiếp cận với khái niệm LỖI trong Java. Từ đó hiểu rõ thế nào là Exception. Ngoài ra bài học còn giúp bạn phân biệt các loại Exception trong hệ thống Java nữa. – Bắt (bẫy) Exception – Sau khi đã hiểu Exception là gì, thì bạn sẽ biết được cách thức bắt, hay bẫy Exception. Biết được kiến thức này, bạn có thể “bẻ luồng” logic của chương trình thông qua công cụ try catch. Việc bẻ luồng này nhằm mục đích vẫn đảm bảo sao cho ứng dụng của bạn vẫn luôn luôn “sống” dù cho nó có bị các LỖI nào tác động đến đi chăng nữa. – Tìm hiểu sâu hơn về try catch – Khi bạn đã biết bắt Exception thông qua try catch, bạn sẽ được biết đến công dụng cao hơn nữa của công cụ này qua hai khái niệm Try Catch với Finally và Try Catch với Resource. Và mình cũng tranh thủ nói đến một số phương thức hữu ích của lớp Exception ở bài này, giúp bạn có thể hiểu rõ hơn về cách sử dụng công cụ này, và có thể vận dụng các phương thức đó cho bài học ngày hôm nay.
Bài hôm nay chúng ta đến với kiến thức còn lại của Exception. Bài học sẽ hướng dẫn bạn đạt đến một cảnh giới hoàn toàn không sợ sệt gì với Exception cả. Thậm chí bạn có thể “tung hứng” chúng, đẩy chúng về một nơi khác xử lý, và rồi bạn còn có thể tự tạo ra một Exception cho riêng bạn nữa.
Nếu bạn thấy thú vị thì mời các bạn cùng đến với bài viết.
Tất cả chúng ta cho đến giờ phút này đều hiểu rõ về Exception rồi. Nhưng chúng ta vẫn chỉ đang “chờ đón” Exception đến một cách thụ động mà thôi. Tức là chúng ta chỉ mới đang try và chờ đón (thậm chí không mong muốn) catch ra lỗi.
Nhưng đôi khi trong thực tế, có một số trường hợp buộc chúng ta muốn nhanh chóng hơn tung ra một Exception. Mình dùng từ “tung ra” bởi chính ở nghĩa của từ throw: ném, quăng, tung. Exception được tung ra này có thể là Checked hay Unchecked Exception. Và việc tung ra một Exception này là do chủ ý của bạn.
Cách sử dụng throw cũng khá là đơn giản. Bất cứ nơi nào đó bên trong một phương thức, hay một khối lệnh, mà bạn muốn tung ra Exception, thì cứ dùng throw như với bài thực hành sau.
Trước khi qua mục tiếp theo, mình có một lưu ý rằng. Với ví dụ trên đây, khi tung ra một Exception, chúng ta chọn InputMismatchException. Đây là một Unchecked Exception. Do đó nơi gọi đến phương thức có tung Exception này không bị trình biên dịch báo lỗi bắt bạn phải thêm vào một try catch. Nhưng nếu bạn thử nghiệm với một Checked Exception xem, khi đó sẽ có nhiều điều đáng nói đến, và còn liên quan đến khái niệm throws nữa nên mình sẽ dành trường hợp này và nói chung ở mục kế tiếp sau.
Bạn chú ý đừng nhầm lẫn nhé. Mục trên kia có nói đến việc tự ý tung ra một Exception thông qua từ khóa throw. Còn mục này đang nói đến throws (có thêm chữ s).
Khác với throw rằng bạn có thể sử dụng bên trong một phương thức hay một khối lệnh nào đó. Throws lại dùng ngay khi bạn khai báo một phương thức.
Throws được dùng khi bạn không muốn phải xây dựng try catch bên trong một phương thức nào đó, bạn “đẩy trách nhiệm” phải try catch này cho phương thức nào đó bên ngoài có gọi đến nó phải try catch giúp cho bạn.
Chúng ta cùng đến với các bài thực hành sau để hiểu rõ nhất về throws, và về cả việc vận dụng tốt với nhau giữa throw và throws nữa nhé.
Đến bước này đây, tất cả chúng ta đều đã đạt đến đỉnh cao nhất của việc hiểu và sử dụng Exception rồi. Khi mà tất cả chúng ta rồi đây sẽ tự tạo ra một Exception cho riêng chúng ta.
Việc xây dựng một Exception cho riêng chúng ta sẽ được gọi với một cái tên ngắn thôi: Custom Exception. Custom Exception thực chất cũng là một Exception nào đó, nó được đặt một cái tên hợp lý hơn trong hoàn cảnh ứng dụng của bạn (thay vì các cái tên Exception có sẵn mà bạn đã từng làm quen). Rồi thông qua Custom Exception, bạn có thể điều chỉnh việc thông báo lỗi, để mang đến một sự rõ ràng hơn cho ứng dụng.
Trước khi chính thức tạo một Custom Exception, chúng ta cùng điểm qua mấy ý quan trọng này trước.
– Tất cả các Custom Exception phải đều là con của lớp Throwable (bạn có thể xem lại kiến thức ở mục này nếu lỡ quên lớp Throwable là lớp gì nha). – Nếu bạn muốn tạo ra một Custom Exception và muốn hệ thống báo lỗi khi không try catch cho nó, thì hãy tạo một lớp và kế thừa từ lớp Exception (có thể xem ở link trên để biết lớp Exception là lớp gì). Và dĩ nhiên lớp Exception là con của Throwable rồi nên nếu bạn làm theo ý này thì cũng sẽ thỏa ý tên kia thôi. – Còn nếu bạn muốn tạo một Custom Exception và không cần hệ thống báo lỗi, bạn chỉ cần tạo một lớp và kế thừa từ lớp RuntimeException mà thôi (RuntimeException cũng là con của Throwable, và link trên cũng đã nói về lớp này).
Các ý trên đây cỏn con thôi đúng không nào. Chúng ta cùng đến với bài thực hành.
Như vậy kết thúc bài học hôm nay chúng ta cũng đã xong luôn kiến thức thú vị về Exception. Bài sau sẽ là một kiến thức thú vị khác của Java, đó là kiến thức về Thread.
Bài Kế Tiếp
Chúng ta sẽ bước qua kiến thức cực kỳ thú vị về Thread trong Java.