60.ExceptionHandling vs MethodOverriding trong lập trình java

Trong lập trình Java, từ khóa “throws” được sử dụng trong khai báo phương thức để xác định rằng phương thức có thể ném ra một hoặc nhiều loại ngoại lệ (exception) trong quá trình thực thi, và yêu cầu người gọi phương thức phải xử lý hoặc tiếp tục ném các ngoại lệ đó.

Khi một phương thức được khai báo sử dụng từ khóa “throws”, bạn cần chỉ định các loại ngoại lệ mà phương thức có thể ném ra. Điều này cung cấp thông tin cho người gọi biết cần phải đối mặt và xử lý những ngoại lệ đó để đảm bảo sự an toàn và xác định trong ứng dụng.

Cú pháp sử dụng từ khóa “throws” như sau:

java
modifier returnType methodName(parameterList) throws exceptionType1, exceptionType2, ... {
    // method body
}

Ở đây:

  • modifier: Quyền truy cập của phương thức (public, private, protected, hoặc default).
  • returnType: Kiểu dữ liệu trả về của phương thức. Nếu phương thức không trả về giá trị, kiểu dữ liệu là void.
  • methodName: Tên của phương thức.
  • parameterList: Danh sách các tham số (nếu có) của phương thức.
  • exceptionType1, exceptionType2, ...: Danh sách các loại ngoại lệ mà phương thức có thể ném ra. Các loại ngoại lệ được liệt kê sau từ khóa “throws” và cách nhau bởi dấu phẩy.

Ví dụ, ta có thể khai báo một phương thức có thể ném ra ngoại lệ IOException:

java
import java.io.IOException;

public void readFile(String filename) throws IOException {
    // code to read file
}

Khi gọi phương thức readFile từ một nơi khác trong chương trình, người gọi sẽ phải xử lý hoặc tiếp tục ném ngoại lệ IOException, ví dụ như sử dụng khối “try-catch” để bắt ngoại lệ:

java
public static void main(String[] args) {
    try {
        readFile("example.txt");
    } catch (IOException e) {
        System.err.println("Error reading file: " + e.getMessage());
    }
}
User

ExceptionHandling vs MethodOverriding trong lập trình javaChatGPT

Exception Handling (xử lý ngoại lệ) và Method Overriding (ghi đè phương thức) là hai khái niệm quan trọng trong lập trình Java, nhưng chúng có ý nghĩa và mục đích hoàn toàn khác nhau.

  1. Exception Handling (Xử lý ngoại lệ): Exception Handling là cơ chế trong lập trình để xử lý các tình huống bất thường (ngoại lệ) mà có thể xảy ra trong quá trình thực thi chương trình. Các ngoại lệ có thể là lỗi thời gian chạy (runtime errors) như chia cho 0, truy cập mảng vượt quá chỉ mục, mất kết nối cơ sở dữ liệu, v.v. Hay các ngoại lệ có thể là lỗi biên dịch (compile-time errors) khi vi phạm các quy tắc ngữ pháp của ngôn ngữ.Trong Java, để xử lý ngoại lệ, chúng ta sử dụng cấu trúc “try-catch-finally” hoặc “throws” để bắt hoặc truyền ngoại lệ. Khi một ngoại lệ xảy ra trong khối “try”, nó sẽ được bắt bởi khối “catch” tương ứng và thực hiện các xử lý phù hợp. Nếu không có khối “catch” phù hợp, ngoại lệ sẽ được truyền cho phương thức gọi tiếp theo hoặc các phần tử gọi tiếp trong ngăn xếp cuộc gọi. Khối “finally” (nếu có) sẽ được thực thi dù có ngoại lệ hay không, và thường được sử dụng để giải phóng tài nguyên hoặc thực hiện các công việc cuối cùng.
  2. Method Overriding (Ghi đè phương thức): Method Overriding là cơ chế trong lập trình hướng đối tượng cho phép một lớp con (subclass) ghi đè lên phương thức của lớp cha (superclass). Điều này cho phép lớp con thay đổi cách thức thực thi của phương thức đã được định nghĩa trong lớp cha, với điều kiện các phương thức này có cùng tên, cùng tham số và cùng kiểu trả về.Để ghi đè phương thức, ta sử dụng từ khóa “override” (hoặc “@Override” – Annotation) trước phương thức của lớp con. Khi gọi phương thức từ một đối tượng của lớp con, phương thức của lớp con sẽ được thực thi thay vì phương thức của lớp cha nếu đã được ghi đè.

Ví dụ:

java
// Ví dụ xử lý ngoại lệ
public class ExceptionHandlingExample {
    public static void main(String[] args) {
        int dividend = 10;
        int divisor = 0;
        
        try {
            int result = dividend / divisor;
            System.out.println("Result: " + result);
        } catch (ArithmeticException e) {
            System.err.println("Error: " + e.getMessage());
        }
    }
}
java
// Ví dụ ghi đè phương thức
class Animal {
    void makeSound() {
        System.out.println("Animal makes a sound");
    }
}

class Dog extends Animal {
    @Override
    void makeSound() {
        System.out.println("Dog barks");
    }
}

public class MethodOverridingExample {
    public static void main(String[] args) {
        Animal animal = new Dog();
        animal.makeSound(); // Output: Dog barks
    }
}

Như bạn có thể thấy, Exception Handling và Method Overriding là hai khái niệm quan trọng trong Java nhằm giúp xử lý các tình huống bất thường và cung cấp tính đa hình và thừa kế trong lập trình hướng đối tượng.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top