Chào các bạn đã đến với chủ đề tiếp theo của mình. Hôm nay, mình sẽ tiếp tục tìm hiểu về cách xử lý những lỗi có thể xảy ra trong lúc lập trình bằng try catch. Ở bài này, mình sẽ đi qua những nội dung như sau:
1. Try Catch là gì?
Khi chạy chương trình, có rất nhiều loại lỗi khác nhau có thể xảy ra như: lỗi do sai lầm người viết, lỗi do sai thông tin đầu vào hoặc những lỗi mà không thể lường trước được. Và khi có lỗi, Java sẽ dừng lại và hiện thị thông tin lỗi ra, kĩ thuật đó thường được gọi là ‘throw an exception/error’.
Chương trình Java sẽ ném lỗi như sau:
Và có những lỗi xuất phát từ người dùng, thì lúc đó ta không thể cho họ xem thông tin lỗi như thế này được. Với những người không thành thạo về máy vi tính hoặc tiếng Anh thì họ nghĩ chương trình bạn viết bị lỗi mà không phải lỗi từ họ.
Vì vậy, Try Catch có nhiệm vụ bắt (Catch) các lỗi mà thực tế có thể xảy ra để xử lý sao cho chương trình thân thiện với người dùng hơn.
2. Cú pháp Try Catch
Cú pháp:
try {
//Những khối lệnh có thể phát sinh lỗi
} catch (Exception e) { //tham số e là tên lỗi muốn xử lý
//Chương trình thực hiện khi gặp lỗi trên
}
Ví dụ: khi gặp lỗi lấy phần tử trong mảng mà không tồn tại
Ta thấy chương trình sẽ throw lỗi là ArrayIndexOutOfBoundsException, ta sẽ catch lỗi đó như sau:
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
int[] a = {5,6,7};
System.out.println(a[4]);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Index does not exist");
}
}
Nếu bạn không thể lường trước toàn bộ lỗi, ta có thể đặt mặc định Exception để xử lý lỗi mà bạn chưa tính đến được.
Ví dụ: Tính tổng các tham số truyền vào trong phương thức main
public static void main(String[] args) {
// TODO Auto-generated method stub
int S=0;
try {
for (String arg : args) {
S+= Integer.parseInt(arg);
System.out.println(arg);
}
} catch (Exception e) {
System.out.println("Error:"+e.toString());
}
}
Ta dùng phương thức parseInt trong class Integer để chuyển giá trị kiểu String sang giá trị kiểu int (với điều kiện chuỗi đó mang ý nghĩa con số). Giả sử người dùng cho tham số truyền vào không phải kí tự số
Như vậy lỗi có tên là: java.lang.NumberFormatException
3. Từ khóa finally
Từ khóa finally có ý nghĩa sẽ chạy những dòng code sau khi kết thúc try catch bất kì có lỗi hay không.
Ví dụ:
public static void main(String[] args) {
// TODO Auto-generated method stub
int S=0;
try {
for (String arg : args) {
S+= Integer.parseInt(arg);
System.out.println(arg);
}
} catch (Exception e) {
System.out.println("Error:"+e.toString());
} finally {
System.out.println("This is end");
}
}
4. Từ khóa throw
Từ khóa throw mục đích chính là để ném lỗi, thường khi bạn viết các phương thức cho người khác và bắt người khác phải tự xử lý những trường hợp đó. Bản chất các Exception là các class, nên khi ném lỗi có nghĩa là: Bạn khởi tạo đối tượng Exception và throw cho người viết sau này phải catch lại:
Ví dụ: Throw lỗi nếu người dùng nhập tham số lớn hơn 100, ta sử dụng class ArithmeticException để xử lý:
public class HelloWorld {
static void inputValue(int value) {
if (value>100) {
throw new ArithmeticException("Value>100");
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
inputValue(102);
}
}
5. Kết
Như vậy chúng ta đã tìm hiểu try catch trong JAVA. Cảm ơn các bạn đã theo dõi bài viết của mình. Chúc các bạn thành công. Hẹn gặp lại các bạn ở những chủ đề tiếp theo. Bái bai.
Nguồn: https://howkteam.vn/course/lap-trinh-java-co-ban-den-huong-doi-tuong/try-catch-trong-java-3891