Cấp bậc tác giả:

TRAINING

JAVA - Ngoại lệ (Exception) và xử lý ngoại lệ

Được viết bởi webmaster ngày 15/07/2018 lúc 09:08 PM
Ngoại lệ là các đối tượng kiểu lớp định nghĩa sẵn, biểu diễn trạng thái lỗi tự động phát sinh khi một hàm được thực hiện
  • 0
  • 4870

JAVA - Ngoại lệ (Exception) và xử lý ngoại lệ

- Ngoại lệ là các đối tượng kiểu lớp định nghĩa sẵn, biểu diễn trạng thái lỗi tự động phát sinh khi một hàm được thực hiện.

- Khi ngoại lệ nảy sinh, có 2 khả năng xử lý: bắt lỗi, cho qua.

- Lệnh xử lý ngoại lệ :  try, catch, finally, throw và throws

a. Lệnh try…catch…finally

 pháp: try {     Statement;

}

catch (Exception-Type1 Name1) {

    Statement1;

} …

 finally Statementn+1;

}


Ý nghĩa:

try : định nghĩa một khối lệnh mà ngoại lệ có thể xảy ra

catch : đi kèm với try để bắt ngoại lệ. Nếu ngoại lệ xảy ra trong khối try, Java sẽ bỏ qua các lệnh còn lại trong khối try, và thực hiện thân của mệnh đề catch có kiểu ngoại lệ tương ứng

finally : thân của mệnh đề finally luôn thực hiện trước khi lệnh try kết thúc, dù có hay không có ngoại lệ


b. Mệnh đề throws

Nếu một hàm chứa lệnh (lời gọi hàm) có phát sinh ngoại lệ mà bạn không bắt lấy bằng lệnh try... catch, phải cho qua bằng cách thêm mệnh đề throws vào cuối khai báo hàm, nếu không trình biên dịch sẽ báo lỗi. :

throws Exception-Type1,Exception-Type2…


c. Lệnh throw

Cú pháp: throw Exception-Instance;

Tạo một đối tượng kiểu ngoại lệ : sử dụng tham đối trong mệnh đề catch hay tạo một đối tượng mới bằng toán tử new

Ví dụ: throw new NumberFormatException();

Ý nghĩa: Lệnh throw đưa vào khối try cho phép bạn điều khiển điều kiện phát sinh ngoại lệ. Khi gặp lệnh throw, chương trình sẽ bỏ qua các câu lệnh sau throw trong khối truy, và thực hiện thân của mệnh đề catch có kiểu ngoại lệ tương ứng


VD: Nhập họ tên không quá 25 ký tự, năm sinh từ 1980 đến 1985 import java.io.*;

class Nhap {

public static void main (String[] args) throws IOException {

BufferedReader kbd = new BufferedReader(new InputStreamReader (System.in));

String s = null;

do {

System.out.print("Nhap Ho va ten khong qua 25 ky tu: ");

s = kbd.readLine(); //phát sinh  IOException

} while (s.length()>25 || s.length()==0);

System.out.println(“Ho va ten là : “+s);


while (true) {

   try { 

      System.out.print("Nhap nam sinh : ");

      s = kbd.readLine();

      int ns =Integer.parseInt(s); //phát sinh NumberFormatException

      if (ns<1980 || ns>1985) throw new NumberFormatException();

      System.out.println("Nam sinh la : "+ns);

      break;

}

catch(NumberFormatException e) {

   System.out.println("Ban nhap lai nam sinh tu 1980 -1985");

}

}}}


Bài tập Thực hành:

1. Viết chương trình tính phép chia của 2 số, có xử lý lỗi ngoại lệ với trường hợp số bị chia bằng 0. Mã nguồn tham khảo
public class PhepChia {
public void chia(int so_chia, int so_bi_chia){
try {
  if(so_bi_chia == 0)throw new Exception();
  System.out.println(so_chia+" / "+so_bi_chia+" =
"+(so_chia/so_bi_chia)); }
catch (Exception er){
  System.out.println("Gap loi: " +er);
}
finally {
System.out.println("Nhung viec can thuc hien");
}
System.out.println("Ket thuc ham chia()");
}
public static void main(String args[]){
int n = Integer.parseInt(args[0]);
int m = Integer.parseInt(args[1]);
PhepChia c = new PhepChia();
c.chia(n,m);
System.out.println("Ket thuc ham main!");
}
}
2. Viết chương trình khởi tạo mảng các phần tử ngẫu nhiên, có xử lý lỗi ngoại lệ với trường hợp số phần tử của mảng <0 hoặc truy xuất vượt quá chiều dài của mảng.

Nguồn bài viết: DOTNET.VN

BÌNH LUẬN BÀI VIẾT

Bài viết mới nhất

LIKE BOX

Bài viết được xem nhiều nhất

HỌC HTML