Menu
CoddyTech

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");
}
challenge icon

Thử thách

Dễ

Tạo một phương thức tên là divideNumbers nhận ba đối số:

  1. Một chuỗi (num1) biểu thị số thứ nhất
  2. Một chuỗi (num2) biểu thị số thứ hai
  3. Một số nguyên (index) biểu thị chỉ số của mảng

Phương thức cần:

  1. Tạo một mảng có kích thước 2
  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
  3. Trả về giá trị tại chỉ số đã cho
  4. 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));
    }
}
quiz iconTự kiểm tra

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

Tự luyện tập: Trình biên dịch Java online