Mục lục:
- Biên dịch lỗi thời gian
- Trình biên dịch Java không thể tìm thấy mọi lỗi trong mã của bạn. Nếu dạng mã là chính xác (có nghĩa là bạn không mắc phải sai lầm khi gõ các phần tử tạo ứng dụng), trình biên dịch sẽ không tìm ra lỗi.
Video: Java Cơ Bản 64 Exception Ngoại lệ trong Java 2025
Lỗi trong các ứng dụng Java có thể xảy ra ở những thời điểm khác nhau. Tuy nhiên, bạn có thể phân loại rộng rãi khi một lỗi sẽ xảy ra thành hai loại, tại thời gian biên dịch và thời gian chạy, như được mô tả trong các phần sau.
Biên dịch lỗi thời gian
Trình dịch chuyển mã ứng dụng của bạn thành mã byte Java. Trong quá trình này, phải mất mã nguồn do con người đọc được và chuyển đổi nó thành một thứ mà Môi trường chạy Java (JRE) hiểu.
phân tích cú pháp đoạn mã, nghĩa là nó đọc mã một cách không xác định xác định chính xác những gì bạn muốn ứng dụng làm, khi bạn muốn nó để làm điều đó, và làm thế nào bạn muốn công việc hoàn thành. Nếu bạn vi phạm các quy tắc để viết mã rõ ràng, trình biên dịch sẽ hiển thị một thông báo lỗi. Thông điệp này thực sự là một ngoại lệ. Phân tích cú phápcó nghĩa là đọc đầu vào bạn cung cấp, chẳng hạn như mã trong dạng người có thể đọc được, và biến nó thành một cái gì khác, ví dụ như mã byte Java. Một ứng dụng cũng có thể phân tích cú pháp đầu vào của người dùng. Ví dụ: người dùng có thể gõ một chuỗi mà mã ứng dụng của bạn biến thành một số.
Ví dụ: nếu người dùng nhập vào một chuỗi có chứa chữ C và bạn mong đợi một chuỗi có chứa một số, chẳng hạn như 123, trình phân tích cú pháp sẽ tạo ra một ngoại lệ cho biết đầu vào không chính xác.
Để đảm bảo rằng mọi người hiểu chính xác ngôn ngữ Java được yêu cầu làm việc như thế nào, các nhà phát triển sẽ tạo ra một đặc tả cho nó. Đặc tả này bao gồm các yếu tố ngôn ngữ trong một ngôn ngữ đặc biệt gọi là Mẫu Backus-Naur (BNF). Sử dụng BNF là một phương pháp cực kỳ chính xác để mô tả một ngôn ngữ để không có bất kỳ nguy cơ sai lầm giải thích bởi bất cứ ai.
Bạn có thể thấy một mẫu của BNF cho ngôn ngữ Java tại Khoa Khoa học Máy tính - Daimi. Đừng lo lắng quá nhiều về việc có thể đọc đặc tả này. Hầu hết các nhà phát triển không bao giờ học để giải thích BNF cho các ngôn ngữ mà họ sử dụng - đó là lĩnh vực của các nhà phát triển biên dịch.
Thời gian chạy lỗi
Trình biên dịch Java không thể tìm thấy mọi lỗi trong mã của bạn. Nếu dạng mã là chính xác (có nghĩa là bạn không mắc phải sai lầm khi gõ các phần tử tạo ứng dụng), trình biên dịch sẽ không tìm ra lỗi.
Ví dụ: nếu bạn khởi tạo một giá trị số là 5 thay vì 4, trình biên dịch sẽ không thể tìm ra lỗi cho bạn vì trình biên dịch không có ý tưởng rằng bạn thực sự muốn gõ 4. Những sai sót này tạo ra
lỗi thời gian chạy - những lỗi xảy ra tại một số điểm trong quá trình thực hiện ứng dụng. Thời gian chạy lỗi có thể xảy ra ở tất cả các lần. Một số lỗi có nhiều khả năng xảy ra vào những thời điểm cụ thể. Danh sách sau đây cung cấp cho bạn một số ý tưởng về thời gian chạy lỗi có thể xảy ra:
Khởi tạo:
-
Khi ứng dụng bắt đầu - trước khi trình bày bất kỳ loại giao diện nào với người dùng hoặc thực hiện bất kỳ công việc hữu ích nào - nó đi qua một giai đoạn khởi tạo. Đây là khi thiết lập một biến cho các loại không chính xác hoặc cố gắng sử dụng một biến trước khi bạn khởi tạo nó sẽ nhận được chú ý. Nhiều lỗi liên quan đến tài nguyên cũng xảy ra trong quá trình khởi tạo vì hầu hết các ứng dụng đều mở các tài nguyên cần thiết trong thời gian này. Chế độ hoạt động:
-
Sau khi khởi động một ứng dụng, nó đang ở chế độ hoạt động. Nếu nó có một giao diện người dùng, nó sẽ bắt đầu tương tác với người dùng. Đây là thời điểm người dùng nhập quan trọng nhất. Bạn cũng sẽ tìm thấy các biến đã được khởi tạo không chính xác tại thời điểm này vì người dùng (hoặc người nhận đầu ra ứng dụng, chẳng hạn như hệ thống) sẽ thấy rằng đầu ra không chính xác. Yêu cầu người dùng về các tài nguyên, chẳng hạn như tệp dữ liệu, cũng tạo ra lỗi trong thời gian này.
Xử lý nền:
-
Hầu hết các lỗi xử lý nền là kết quả của môi trường (chẳng hạn như mất kết nối mạng), tài nguyên bị mất (như tệp bị mất), các biến đã được khởi tạo không chính xác hoặc lỗi trong cách bạn nói với ứng dụng để thực hiện một nhiệm vụ. Một số nhiệm vụ thường được thực hiện ở chế độ nền hơn các nhiệm vụ khác. Ví dụ: in tài liệu hoặc tải tài nguyên từ Internet thường được thực hiện dưới nền, trong khi người dùng tiếp tục làm việc với ứng dụng ở tiền cảnh.
Tắt máy:
-
Khi người dùng (kể cả tài khoản hệ thống) cho ứng dụng biết nó không còn cần thiết, ứng dụng sẽ trải qua giai đoạn ngừng hoạt động. Trong giai đoạn tắt máy này, ứng dụng sẽ đóng các tệp và thực hiện các công việc dọn dẹp khác đảm bảo ứng dụng không để lại mớ hỗn độn cho hệ điều hành. Các lỗi phổ biến nhất có thể xảy ra trong giai đoạn này không phải là giải phóng các tài nguyên mà ứng dụng của bạn đã sử dụng và không lưu dữ liệu vào đĩa. Tất nhiên, lỗi mã hóa có thể xảy ra bất cứ lúc nào, và giai đoạn này của hoạt động cũng không ngoại lệ. Bạn có thể nói với ứng dụng để đóng năm tập tin khi chỉ có bốn trong số đó thực sự mở.
JRE sẽ trình bày hầu hết các lỗi thời gian chạy mà nó phát hiện ra bạn là những ngoại lệ. Tuy nhiên, JRE sẽ không nắm bắt mọi lỗi trong ứng dụng của bạn.Bạn cũng phải nhìn vào đầu ra của ứng dụng của bạn để xác định xem sản lượng phù hợp với kỳ vọng bạn có cho một đầu vào nhất định.
Ngoài ra, điều quan trọng là phải xem xét trạng thái của bất kỳ nguồn nào bạn sử dụng để đảm bảo rằng chúng không bị hư hỏng theo cách nào đó. Ví dụ: bạn cần đảm bảo rằng bất kỳ dữ liệu nào bạn cần lưu trong một tệp thực sự kết thúc trong tệp khi ứng dụng của bạn tắt.
Java 8 có sự nhấn mạnh hơn về bảo mật, có nghĩa là bạn sẽ thấy nhiều trường hợp An Ninh hơn khi bạn làm việc với ứng dụng của bạn.
Việc xem xét sự gia tăng các ngoại lệ về bảo mật không có nghĩa là mã của bạn bị lỗi hoặc Java 8 bị lấp đầy lỗi - có nghĩa là Java 8 sẽ tự động tìm và thông báo cho bạn về các vấn đề có thể gây ra vấn đề bảo mật khi mọi người sử dụng ứng dụng của bạn.
Tài liệu SecurityException xuất hiện ở Java. mạng lưới. Tất nhiên, bạn sẽ muốn biết những gì tất cả các hubbub là về.