JavaScript is required

Where is an exception generated?

A.

In the catch block

B.

In the throw clause

C.

In the constructor of a class

D.

Only when memory allocation fails

Trả lời:

Đáp án đúng: B


Trong lập trình hướng đối tượng, một ngoại lệ (exception) được tạo ra (generated) khi có một sự kiện bất thường xảy ra trong quá trình thực thi chương trình, làm gián đoạn luồng thực thi bình thường. Điều này thường xảy ra khi một điều kiện lỗi hoặc không mong muốn phát sinh. Các phương án được đánh giá như sau:

  • A. Trong khối catch: Khối catch dùng để bắt và xử lý các ngoại lệ đã được ném ra, chứ không phải là nơi ngoại lệ được tạo ra.
  • B. Trong mệnh đề throw: Mệnh đề throw được sử dụng để chủ động ném ra một ngoại lệ. Đây chính là nơi ngoại lệ được tạo ra và "ném" đi để báo hiệu một vấn đề.
  • C. Trong constructor của một lớp: Constructor của một lớp có thể tạo ra ngoại lệ nếu có lỗi xảy ra trong quá trình khởi tạo đối tượng, ví dụ như không đủ bộ nhớ hoặc dữ liệu đầu vào không hợp lệ.
  • D. Chỉ khi cấp phát bộ nhớ thất bại: Việc cấp phát bộ nhớ thất bại chỉ là một trong nhiều nguyên nhân có thể dẫn đến ngoại lệ. Ngoại lệ có thể xảy ra do nhiều nguyên nhân khác như chia cho 0, truy cập vào một vị trí bộ nhớ không hợp lệ, hoặc do logic nghiệp vụ của chương trình.

Như vậy, đáp án chính xác nhất là B và C. Tuy nhiên, vì câu hỏi yêu cầu chọn MỘT đáp án, đáp án B mang tính tổng quát hơn vì `throw` là cách trực tiếp tạo ra exception, còn constructor chỉ là một trường hợp cụ thể. Trong một số ngôn ngữ, việc ném exception trong constructor được khuyến khích để báo hiệu việc khởi tạo không thành công.

Tuy nhiên, theo đề bài này, ta nên chọn B là đáp án đúng nhất.

Câu hỏi liên quan