Xử lý bắt lỗi trong JAVA

Bài viết này chỉ mang tính chất tham khảo, nếu các bạn chưa biết gì về Exception thì bài này dành cho bạn, nếu đã biết rồi thì bạn có thể bỏ qua bài này! Trong quá trình thực hiện chắc chắn sẽ có thiếu xót.Vậy Mong các bạn bỏ qua cho tuanvu_n nhé! Nhân tiện cám ơn anh JackV đã giúp em hoàn thiện bài viết! “Cám ơn anh”

Khi lập trình viên viết code sẽ thường xuyên mắc phải 3 lỗi như sau:

Hình minh họa:
[​IMG]

Exception là gì?

Định nghĩa: Exception (Ngoại lệ) là sự kiện xảy ra khi một chương trình đang chạy mà phát sinh ra lỗi. Nó sẽ làm gián đoạn chương trình 

Example:

PHP:
public static void main(String[] args) {
System.out.println("4 chia 0: "+4/0);
}

Kết quả là chương trình không thực thi được! (Không tin bạn có thể thử)
Nguyên nhân: Lỗi chia cho số 0.

Có lẽ bạn sẽ hỏi tôi: “Vậy làm sao để xử lý ngoại lệ đó!
Giải quyết: Chúng ta sẽ bắt ngoại lệ và giải quyết chúng thông qua khối try/catch được cung cấp trong Java
Example:

PHP:
public static void main(String[] args) {
try {
System.out.println("4 chia 5: "+4/0);
} catch (
Exception e) {
System.out.println("Lỗi chia cho số 0!");;
}
}

Kết quả: 


Giải thích: (Exception e) trong đó “e” là tên của được gán nếu đối tượng bị lỗi, các bạn có thể đặt tên này bằng các từ khác. ví dụ: a, b, c,…
Trường hơp, nếu bạn biết chắc chắn là đó là lỗi gì thì bạn có thể làm như sau:
Example:

PHP:
public static void main(String[] args) {
try {
System.out.println("4 chia 5: "+4/0);
} catch (
ArithmeticException e) {
System.out.println(e);;
}
}

Kết quả:
[​IMG]

Vấn đề tiếp theo! Nếu chúng ta không biết chính xác một ngoại lệ nào đó thì sao? Vậy thì chúng ta sẽ để chương trình làm viêc đó!
Example:

PHP:
 public static void main(String[] args) {
try {
System.out.println("4 chia 5: "+4/0);
} catch (
Exception e) {
System.out.println("Lỗi: "+e);;
}
}

Kết quả:


Tóm lại: Nếu bạn biết một lỗi nào đó sẽ xảy ra bạn nên làm theo cách trên, còn nếu không biết thì mới bất đắc dĩ sài cách để chương trình tự bắt lỗi! Điều này thực sự cần thiết vì nó sẽ làm chương trình của bạn chạy trơn tru hơn, khi gặp lỗi sẽ không bị treo máy hoặc một vài sự cố khác, ect…


Vậy tôi muốn bẫy lỗi nhiều Exception thì làm sao? Bạn thực hiện như bên dưới nhé!
Example:

PHP:
public static void main(String[] args) {
try {
//Nội dung muốn bẫy lỗi
} catch (ExceptionType1 e) {
//Comment cho lỗi
}catch (ExceptionType2 e1) {
//Comment cho lỗi
} catch (Exception ex) {
//Exception cho những cái còn lại
}
}

Trong đó: Exception là các ngoại lệ trong java. Bạn có thể tham khảo bảng bên dưới hoặc dùng gã khổng lồ google để tìm thêm nhiều hơn.

Danh sách một số ngoại lệ:

Tiếp theo, chúng ta sẽ tìm hiểu về finally trong java.​
Vì bài này chỉ mang hình thức giới thiệu thôi, nên tuanvu_n sẽ không đi sâu nhé!​

 

Finally trong java là gì?

 

Định nghĩa: Finally là một khối lệnh yêu cầu kết thúc chương trình khi một Exception bị bỏ qua hoặc không thể thực hiện! (trường hợp này hơi hiếm)

 

Cụ thể như việc bạn mở một file text document chẳng hạn, bạn đang sao chép chỉnh sửa trên đó, vô tình có một phương thức nào đó bị sai và lúc này Exception bắt lỗi! Tệ hại hơn là chương trình chưa kịp dùng tới phương thức đóng file. Thế là toàn bộ ứng dụng cứ trơ trơ ra đó, làm hao tổn tài nguyên của máy, xem chừng mất hết dữ liệu trong file luôn! Lúc này khối lệnh finally sẽ phát huy tác dụng. Nó sẽ ra lệnh: “Anh làm gì thì làm, nhưng hãy đem con gái tôi về một cách an toàn! Không thì liệu hồn tôi +_+” (Hì, ngoài lề chút). Lúc này khối lệnh sẽ thực hiện những công việc còn lại nhằm đảm bảo toàn vẹn dữ liệu cho file.​

 

Thôi cứ xem qua ví dụ thì các bạn sẽ hiểu!​
Example:

 

PHP:
public static void main(String[] args) {
Scanner nhap = new Scanner(System.in);
try {
System.out.println("Cô gái trốn khỏi nhà!");
System.out.println("Nhập vào một số bất kì để tìm kiếm: ");
int a =nhap.nextInt();
System.out.println("Vệ sĩ đã tìm thấy và đưa cô ấy về!");
} catch (
Exception e) {
System.out.println("Vệ sĩ: Chúng tôi không tìm thấy!");
}
finally{
System.out.println("Cô ấy về rồi! Khỏi kiếm");
}
}

Kết quả:


Như ví dụ trên, khi tôi nhập sai thì xảy ra exception! (vì chương trình yêu cầu nhập vào một số mà tôi lại nhập kí tự)
Như thế đồng nghĩa với việc dòng System.out.println(“Vệ sĩ đã tìm thấy và đưa cô ấy về!”);không được thực hiện (tương tự như việc đóng file như đã đề cập phía trên). Nhưng nhờ có khối lệnh finally mà chương trình kết thúc có hậu! (^_^). Đó chính là chức năng của finally trong java.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s