Tóm lại, câu trả lời là có, có thể. Ví dụ - nếu lớp ngoại lệ yêu cầu một đối tượng lớn được khởi tạo dưới dạng một trường, nhưng không đủ bộ nhớ để cấp phát, bạn sẽ nhận được một đối tượng ngoại lệ sẽ ném một số OutOfMemoryException
.
Ngoại lệ giống như bất kỳ lớp nào khác và có thể tự ném ngoại lệ. Không có gì trong ngôn ngữ không cho phép nó.
Tôi sẽ nói, tuy nhiên, việc ném ngoại lệ từ một lớp ngoại lệ là thực hành không tốt và nói chung nên tránh.
Cập nhật: (sau câu hỏi được cập nhật)
Nếu bạn đang instantiating một đối tượng ngoại lệ trong một khối try
, các catch
sẽ bắt nó (giả sử nó bắt kiểu thích hợp ngoại lệ). Nếu bạn đang instantiating nó trong khối catch
, bạn có thể muốn làm điều đó trong một lồng nhau try{}catch{}
- điều này là khá bình thường đối với mã được sử dụng trong một khối catch có thể ném ngoại lệ.
Như những người khác đã nói - một số trường hợp ngoại lệ không nên bị bắt (ví dụ OutOfMemory
hoặc bất ngờ StackOverflow
), vì bạn không có cách nào để giải quyết chúng.
Bạn có thể làm rõ câu hỏi của mình. Có phải khi ngoại lệ được tạo mới/được tạo không? Là nó trong khối catch? –
Vui lòng xem sửa đổi của tôi ở trên. Cảm ơn bạn. – xport
Bare in mind. Không phải tất cả ngoại lệ đều có thể và sẽ được xử lý. Một số chỉ dẫn cho logic hoặc lỗi không chính xác. –