Cơ bản về try-catch
Thuộc phần Logic và luồng chương trình trong hành trình Java của Coddy. Bài học 40 trên 59.
Các khối try-catch trong Java dùng để xử lý ngoại lệ (lỗi) có thể xảy ra khi chương trình chạy. Đặt đoạn code có thể phát sinh ngoại lệ trong khối try, còn code xử lý lỗi nằm trong khối catch.
Đây là cấu trúc cơ bản của khối try-catch:
try {
// Đoạn code có thể phát sinh ngoại lệ (exception)
} catch (ExceptionType e) {
// Đoạn code xử lý ngoại lệ
}Hãy xem cách hoạt động của Integer.parseInt(), hàm này chuyển đổi một chuỗi (String) thành số nguyên:
String text = "abc";
try {
int number = Integer.parseInt(text);
System.out.println(number);
} catch (NumberFormatException e) {
System.out.println("Error: Not a valid number");
}Sau khi chạy đoạn code trên, đầu ra là:
Error: Not a valid number
Một khối try có thể theo sau bởi nhiều khối catch, mỗi khối dành cho một loại ngoại lệ. Java chạy khối đầu tiên có loại khớp với ngoại lệ đã xảy ra:
try {
int number = Integer.parseInt(text);
System.out.println(10 / number);
} catch (NumberFormatException e) {
System.out.println("Error: Not a valid number");
} catch (ArithmeticException e) {
System.out.println("Error: Division by zero");
}Thử thách
DễTạo một phương thức tên là divideNumbers nhận ba đối số:
- Một chuỗi (
num1) biểu thị số thứ nhất - Một chuỗi (
num2) biểu thị số thứ hai - Một số nguyên (
index) biểu thị chỉ số của mảng
Phương thức cần:
- Tạo một mảng có kích thước 2
- Lưu giá trị số nguyên đã phân tích từ num1 chia cho giá trị số nguyên đã phân tích từ num2 tại chỉ số đã cho
- Trả về giá trị tại chỉ số đã cho
- Xử lý mọi ngoại lệ có thể xảy ra và trả về thông báo lỗi tương ứng
Các thông báo trả về cần là:
- Với
NumberFormatException: "Error: Invalid number format" - Với
ArithmeticException: "Error: Division by zero" - Với
ArrayIndexOutOfBoundsException: "Error: Invalid array index" - Nếu thao tác thành công: trả về kết quả dưới dạng chuỗi
Tự làm thử
import java.util.Scanner;
public class Main {
public static String divideNumbers(String num1, String num2, int index) {
// Viết code của bạn ở đây
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String num1 = scanner.nextLine();
String num2 = scanner.nextLine();
int index = Integer.parseInt(scanner.nextLine());
System.out.println(divideNumbers(num1, num2, index));
}
}Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Logic và luồng chương trình
1Mảng đa chiều
Kiến thức cơ bản về mảng 2DTruy cập phần tử trong mảng 2DVòng lặp lồng nhau với mảng 2DÔn tập về mảng 2DPhép cộng và phép trừ ma trậnMảng không đềuMảng 3D trở lênCác mẫu thường gặp với mảng 2DÔn tập về mảng2HashMap phần 1
HashMap là gì?Khai báo HashMapTruy cập giá trịKiểm tra khóa có tồn tạiChỉnh sửa từ điểnÔn tập: HashMapTự luyện tập: Trình biên dịch Java online