Xử lý ngoại lệ – thử bắt các khối Java

Vì vậy, mỗi khi chúng tôi quyết định thực hiện một hành động rủi ro, chúng tôi phải thông báo cho trình biên dịch rằng chúng tôi biết đó là một điều rủi ro và chúng tôi sẵn sàng xử lý nó. 

lap-trinh-java
Exception Handling – try catch Java blocks

Làm thế nào chúng ta đối xử với nó không phải là vấn đề của nhà soạn nhạc.

Chúng tôi xử lý các tình huống này bằng cách gói mã của chúng tôi để thử bắt trong Java.

Cú pháp cơ bản của khối thử / bắt / cuối cùng:

try{
     //code that could throw an exception
     //if exception thrown, following code is not reachable
     //control jumps to catch block
}catch(ExceptionType referenceVariable){
	//code that is executed only when an exception is thrown
	//does something using the exception reference variable
	//usually prints stack trace or exception description
}finally{
	//cleanup code
	//always executes regardless of an exception
}

Lưu ý :

Không có mã nào có thể được viết giữa khối thử và khối bắt.

Thử khối PHẢI được theo sau bởi một lần bắt hoặc một khối cuối cùng hoặc cả hai.

Bạn không thể có một cái bắt hoặc cuối cùng mà không có một khối thử.

Bất cứ ai gọi mã của bạn đều phải xử lý nó bằng khối thử / bắt.

Flow control

  1. Nếu khối thử thành công , tức là không có ngoại lệ nào được ném, thì điều khiển sẽ chuyển sang khối cuối cùng nếu nó có mặt. Bắt khối bị bỏ qua. Trong trường hợp không có khối cuối cùng, bất kỳ mã nào nằm dưới khối bắt được thực thi.
  2. Nếu khối thử thất bại (xảy ra ngoại lệ), hãy kiểm soát chuyển sang khối bắt nơi xử lý ngoại lệ. Mã còn lại trong khối thử không bao giờ được thực thi. Trong trường hợp một khối cuối cùng có mặt, thì nó sẽ được chạy sau khi thực hiện khối bắt hoàn thành.
  3. Nếu các khối try / Catch có câu lệnh return , thậm chí thì khối cuối cùng sẽ thực thi! Kiểm soát luồng đầu tiên nhảy đến khối cuối cùng và sau đó quay trở lại câu lệnh return.

Thí dụ

public class TryCatch1 {
public static void main(String[] args) {
	System.out.println(riskyAction());
	}
public static String riskyAction(){
	try{
		System.out.println("Started executing try block");
		return "returning from try block";
	}catch(Exception e){
		return "returning from catch blcok";
	}finally{
		System.out.println("print statement from finally");
	}
	}
}

Đầu ra :

Started executing try block
print statement from finally
returning from try block

Lời giải thích

Thử chạy khối và in Bắt đầu thực hiện thử khối block. 

Một khi nó gặp câu lệnh return, luồng ngay lập tức chuyển sang cuối cùng chặn và in câu lệnh in ra từ cuối cùng.

Nếu cuối cùng khối có câu lệnh return, thì câu lệnh return từ khối try / Catch sẽ bị ghi đè.

Catching multiple exceptions

Trước Java 7, để xử lý nhiều hơn một ngoại lệ, nhiều khối bắt được sử dụng theo thứ tự từ cụ thể nhất đến tổng quát nhất.

Nhưng viết nhiều khối bắt có chứa rất nhiều mã trùng lặp.

A closer look at Finally block

  • Cuối cùng, khối luôn thực thi một khi điều khiển từ khối thử thoát ra bất kể có ném ngoại lệ hay không.
  • Cuối cùng, khối không được thực thi
  1. Nếu JVM thoát trong khi mã khối thử / bắt đang được thực thi
  2. Nếu System.exit () được thực thi trước khi điều khiển đạt đến khối cuối cùng
  3. Nếu luồng thực thi mã thử / bắt bị gián đoạn hoặc bị giết
  • Cuối cùng, chặn mọi rò rỉ tài nguyên bằng cách đóng bất kỳ tài nguyên nào có thể đã được mở.
  • Nếu bất kỳ tài nguyên nào được phục hồi, mã phải được đặt trong khối cuối cùng.
  • Nếu bất kỳ tài nguyên nào được phục hồi, mã phải được đặt trong khối cuối cùng.

Trong Java SE 7 trở lên, câu lệnh try-with-resource được xem xét để tự động đóng các tài nguyên không còn được sử dụng. Nhà phát triển không cần phải nhớ phát hành các tài nguyên đã sử dụng bằng cách viết một khối cuối cùng chỉ cho mục đích này.

Bài viết gần đây

Java Lambda: Hướng dẫn cho người mới bắt đầu

Bài viết này giải thích các biểu thức Java Lambda trong Java 8. Biểu thức Lambda Java

Ví dụ về Tải xuống tệp từ máy chủ bằng cách sử dụng JSP

Trong ví dụ này, chúng tôi sẽ tải xuống tệp jsp. Nhưng bạn có thể tải xuống bất kỳ tập tin. 

Hướng dẫn sử dụng Spring JdbcTemplate

Spring JdbcTemplate là một cơ chế mạnh mẽ để kết nối với cơ sở dữ liệu và thực hiện các truy vấn SQL. Nó sử...

Hướng dẫn chủ đề Java

Một Instance of Thread là một đối tượng giống như bất kỳ đối tượng nào khác trong Java và nó chứa các biến và...

Tải tập tin lên máy chủ bằng cách sử dụng JSP

Có nhiều cách để tải tệp lên máy chủ. Một trong những cách là bởi lớp MultipartRequest. Để sử dụng lớp này,...

Ví dụ cấu hình Spring AOP AspectJ Xml

Spring cho phép bạn xác định các khía cạnh, lời khuyên và điểm nhấn trong tệp xml. Trong trang...

Leave a reply

Please enter your comment!
Please enter your name here