So sánh try catch và throw năm 2024
Trong quá trình học tập, nghiên cứu hoặc trong một bài phỏng vấn về ngôn ngữ Java. Xử lý ngoại lệ là một vấn đề quan trọng giúp chúng ta có thể hoàn thiện, tối ưu một chương trình Java. Sau đây mình sẽ đề xuất 05 điều bạn cần biết về ngoại lệ và xử lý ngoại lệ trong Java. Show 1. Ngoại lệ trong Java là gì?Một ngoại lệ (Exception) trong Java là một vấn đề phát sinh trong quá trình thực thi chương trình. Khi xảy ra ngoại lệ, luồng xử lý (flow) bị gián đoạn, chương trình/ứng dụng dừng bất thường. Nó là một đối tượng được ném ra tại Runtime. Ngoại lệ trong Java có thể xảy ra vì nhiều lý do khác nhau:
Ngoại lệ xảy ra có thể do người dùng, lập trình viên hoặc số khác do tài nguyên bị lỗi. Java Exeption được triển khai bằng cách sử dụng các lớp như Throwable, Exception, RuntimeException và các từ khóa như throw, throws, try, catch và finally. Dựa vào tính chất các vấn đề, người ta chia ngoại lệ thành ba loại:
2. Sự khác nhau giữa "Checked Exceptions" và "Unchecked Exceptions" trong Java?Checked Exceptions: Là một ngoại lệ được kiểm tra và thông báo bởi trình biên dịch tại thời điểm biên dịch, chúng cũng có thể được gọi là ngoại lệ thời gian biên dịch (Compile-time Exceptions). Và lập trình viên không thể lường trước. Ví dụ: Bạn muốn mở một file để đọc nhưng tệp được chỉ định lại không tồn tại. Thì FileNotFoundExeption sẻ xảy ra và trình biên dịch sẽ thông báo tới lập trình viên nhằm xử lý ngoại lệ đó. Unchecked Exceptions: Là một ngoại lệ không được kiểm tra trong quá trình biên dịch. Chúng cũng được gọi là ngoại lệ thời gian chạy (Runtime Exceptions). Là ngoại lệ có thể tránh được bởi lập trình viên. Unchecked Exceptions kế thừa từ Runtime Exception. Ví dụ: ArithmaticException, ArrayIndexOutOfBoundsException, NullPointerException,…chúng được kiểm tra tại Runtime. 3. Sự khác nhau giữa hai từ khóa "
0" và "
1" trong Java? Mặc dù trông giống nhau và đều được sử dụng trong xử lý ngoại lệ nhưng
0 và
1 khác nhau về cách thức sử dụng và nơi chúng được sử dụng trong code. Về throw, nó được sử dụng để ném ra một ngoại lệ cụ thể. Chúng ta có thể ném một trong hai ngoại lệ checked hoặc unchecked trong java bằng từ khóa này. Từ khóa throw chủ yếu được sử dụng để ném ngoại lệ do người dùng tự định nghĩa. Ví dụ:
Kết quả:
Chúng ta có thể lấy một ngoại lệ unchecked được ném bằng từ khóa throws. Về throws, nó được sử dụng để khai báo một ngoại lệ. Nó thông báo cho lập trình viên rằng một ngoại lệ có thể xảy ra. Ngoại lệ checked được truyền ra ngay cả khi chỉ sử dụng từ khóa throws. Throws được khai báo ngay sau dấu đóng ngoặc đơn của phương thức. Ví dụ:
Kết quả:
4. Ngoại lệ kết chuỗi (Chained Exception) trong Java là gì?Ngoại lệ kết chuỗi là một khái niệm xử lý ngoại lệ phổ biến trong Java. Trong đó một ngoại lệ được đưa ra cho một ngoại lệ khác và tạo ra một chuỗi các ngoại lệ. Kỹ thuật này chủ yếu được sử dụng để gói một ngoại lệ được kiểm tra thành một ngoại lệ không được kiểm tra.
Đoạn code trên mô tả kỹ thuật ngoại lệ kết chuỗi, khi một ngoại lệ IOException bị bắt đã được ném cho một ngoại lệ mới SampleException xử lý. Nếu bạn ném ngoại lệ cho một ngoại lệ khác nó luôn bao gồm ngoại lệ ban đầu, vì vậy để code xử lý có thể truy cập nguyên nhân gốc thì hãy sử dụng các phương thức như getCause () và initCause () của lớp Throwable. 5. Sự khác nhau giữa final, finalize, and finally trong Java?Về final, nó là một từ khóa được sử dụng để áp dụng các hạn chế về lớp, phương thức và biến. Lớp final không thể được kế thừa, phương thức final không thể bị ghi đè và giá trị biến final không thể thay đổi. Ví dụ:
Kết quả:
Về finalize, nó là một phương thức được sử dụng để thực hiện dọn dẹp xử lý ngay trước khi đối tượng là rác được thu thập. Ví dụ:
Về finally, nó là một khối được sử dụng cùng try, catch để đặt mã quan trọng, nó sẽ được thực thi cho dù ngoại lệ có được xử lý hay không. Ví dụ:
Kết quả:
Lời kếtHi vọng bài viết này có thể giúp bạn đọc nắm được, ôn lại được những kiến thức cơ bản về Java Exception. Rất mong nhận lại được ý kiến đóng góp nhằm giúp bài viết hoàn thiện hơn. Xin cảm ơn! |