"Chào, Amigo!"

"Chào, Ellie! Cuộc sống thế nào?"

"Tuyệt vời, cảm ơn bạn. Bạn khỏe không?"

"Tuyệt, sáng nay có rất nhiều điều mới đã được giải thích cho tôi."

"Chà, thật tuyệt. Anh không mệt à?"

"Ừ, có cái đó. Tôi hơi mệt."

"Vậy thì bạn thật may mắn. Hôm nay tôi muốn đề cập đến một chủ đề lớn, phức tạp, nhưng vào phút cuối tôi đã đổi ý và quyết định đề cập đến một chủ đề nhỏ, dễ dàng."

"Nhỏ và dễ dàng? Tôi đã sẵn sàng."

"Hôm nay chúng ta sẽ xem xét chi tiết chủ đề Ngoại lệ ."

"Bạn đang nói về xử lý lỗi?"

"Bạn không nên coi các trường hợp ngoại lệ là lỗi. Các trường hợp ngoại lệ giống như các báo cáo rằng 'có điều gì đó không mong muốn đã xảy ra'. Dựa trên các báo cáo này, bạn có thể đề xuất các hành động thay thế."

"Đó là tất cả về các phương thức.  Khi bạn gọi một phương thức, nó hứa sẽ thực hiện những gì nó được gọi để thực hiện. "

"Khi một phương thức, vì bất kỳ lý do gì, không thể thực hiện những gì nó được gọi để làm, thì nó phải cho người gọi biết."

"Nói cách khác, điều tồi tệ nhất có thể xảy ra là một phương pháp không thực hiện công việc của nó và không nói cho ai biết về nó. Không có gì có thể tồi tệ hơn thế. Bạn mất kiểm soát tình hình khi điều đó xảy ra. "

"Khi bạn là một lập trình viên mới, có vẻ như bạn chỉ cần gọi các phương thức và chúng chắc chắn sẽ làm những gì bạn yêu cầu."

"Khi bạn là một lập trình viên có kinh nghiệm, bạn biết rằng có thể có hàng chục yếu tố ảnh hưởng đến khả năng thực hiện công việc của một phương thức và có rất nhiều trường hợp có thể ngăn một phương thức hoàn thành công việc của nó."

"Từ quan điểm của lập trình viên, sẽ tốt hơn gấp ngàn lần nếu một chương trình kết thúc khi gặp lỗi hơn là nếu chương trình gặp lỗi và sau đó tiếp tục hoạt động (không chính xác) mà người dùng không nhận ra điều gì đã xảy ra."

"Vì vậy, chương trình hiển thị sai điều gì đó có thể tệ hơn nếu chương trình bị đóng và mất tất cả dữ liệu?"

"Điều gì khiến bạn nghĩ rằng chương trình chỉ đơn giản là hiển thị một cái gì đó không chính xác? Có thể chương trình có rất nhiều lỗi và tất cả dữ liệu của bạn sẽ bị mất vĩnh viễn? Giả sử bạn đã nhập văn bản trong 3 giờ, nhưng không có văn bản nào được lưu vì một lỗi xảy ra chỉ sau hai phút."

"Khi một lập trình viên mới vào nghề gặp ngoại lệ, anh ta sẽ thất vọng."

"Nhưng trong thực tế, các trường hợp ngoại lệ tiết lộ tất cả các tình huống có thể xảy ra mà lẽ ra anh ấy nên thấy trước nhưng lại không làm được."

"Bạn có thể chọn không xử lý các ngoại lệ và điều đó sẽ khiến bạn trở thành một lập trình viên tồi. Nhưng nếu phương pháp của bạn không đưa ra ngoại lệ, thì bạn hoàn toàn không phải là lập trình viên — bởi vì bạn đã không hiểu được sự thật đơn giản này:"

"một phương thức hoặc thực hiện những gì nó được viết để thực hiện hoặc nó đưa ra một ngoại lệ. Không có tùy chọn thứ ba!"

"Được, tôi tin anh. Tôi hứa sẽ sử dụng ngoại lệ."

"Tuyệt. Vậy thì để tôi kể cho bạn nghe về thứ bậc của các trường hợp ngoại lệ:"

Phân cấp ngoại lệ, lỗi - 1

"Hệ thống phân cấp ngoại lệ dựa trên bốn lớp."

"Lớp cơ sở thấp nhất là Throwable ."

" Các lớp LỗiNgoại lệ kế thừa nó."

" RuntimeException kế thừa Ngoại lệ ."

" Lớp Error là lớp cơ sở cho các lỗi JVM như StackOverFlow , OutOfMemory , …"

"Một chương trình thường không thể phục hồi từ những lỗi như vậy, dẫn đến việc chấm dứt chương trình."

"Thật vậy, có thể làm gì nếu không có đủ bộ nhớ để chương trình tiếp tục chạy bình thường hoặc đã xảy ra lỗi tràn ngăn xếp?"

" Ngoại lệ là lớp cơ sở cho tất cả các ngoại lệ thông thường do một chương trình đưa ra.  RuntimeException là một loại Ngoại lệ đặc biệt có các quy tắc hơi khác."

"Họ là ai?"

"Đó chỉ là những gì tôi sẽ giải thích bây giờ."

"Chắc bạn còn nhớ, các trường hợp ngoại lệ được chia thành hai loại: được chọnkhông được chọn ."

"Nếu một phương thức đưa ra các ngoại lệ được kiểm tra , thì phương thức gọi nó phải bao bọc cuộc gọi trong một khối thử bắt . Chà, điều đó hoặc viết lại ngoại lệ (cho người gọi nó) bằng cách chỉ ra rõ ràng các lần ném trong chữ ký của phương thức."

"Các quy tắc/hạn chế này không áp dụng cho các trường hợp ngoại lệ không được kiểm tra."

"Vì vậy, tất cả các ngoại lệ kế thừa Exception đều được coi là đã được kiểm tra. Ngoại trừ các ngoại lệ kế thừa RuntimeException, được coi là chưa được kiểm tra."

"Uh-huh. Tôi nhớ bạn đã nói với tôi điều gì đó như thế trước đó."

"Bạn ơi! Họ hỏi về hệ thống phân cấp ngoại lệ trong mọi cuộc phỏng vấn . Tôi sẽ nói lại lần nữa - mọi cuộc phỏng vấn . Bạn cần phải biết chủ đề này một cách hoàn hảo."

"OK. Tôi sẽ đọc lại mọi thứ và tìm hiểu. Cảm ơn vì đã giúp tôi, Ellie."