Tôi đang cố gắng tìm hiểu xem mã nằm sau throw new Exception
trong PHP vẫn được thực thi hay không - tôi đã thử nó và dường như nó không xuất ra bất cứ điều gì nhưng muốn biết chắc chắn.Có 'ném ngoại lệ mới' yêu cầu thoát()?
17
A
Trả lời
32
Không, mã sau khi ném ngoại lệ sẽ không được thực thi.
Trong ví dụ mã này tôi đánh dấu các dòng đó sẽ được thực hiện (dòng code) với số lượng:
try {
throw new Exception("caught for demonstration"); // 1
// code below inside the try{} block is never executed
echo "you won't read this." . PHP_EOL;
} catch (Exception $e) {
// you may want to react on the Exception here
echo "exception caught!" . PHP_EOL; // 2
}
// execution flow continues here, because Exception above has been caught
echo "yay, lets continue!" . PHP_EOL; // 3
throw new Exception("uncaught for demonstration"); // 4, end
// execution flow never reaches this point because of the Exception thrown above
// results in "Fatal Error: uncaught Exception ..."
echo "you won't see me, too" . PHP_EOL;
Khi một ngoại lệ được ném ra, đoạn mã sau tuyên bố sẽ không được thực hiện và PHP sẽ cố gắng tìm khối catch khớp đầu tiên. Nếu một ngoại lệ không bị bắt, một Lỗi nghiêm trọng về PHP sẽ được phát hành với một thông báo "Ngoại lệ không bắt buộc ...", trừ khi một trình xử lý đã được xác định với
set_exception_handler()
.
3
Không, mã sau câu lệnh throw
không được thực hiện. Giống như return
.
Các vấn đề liên quan
- 1. ném mới std :: ngoại lệ vs ném std :: ngoại lệ
- 2. ném ngoại lệ mới vs Catch khối
- 3. chênh lệch giữa ném và ném ngoại lệ mới()
- 4. Có gì sai với hoặc ném ngoại lệ mới?
- 5. Python yêu cầu xử lý ngoại lệ
- 6. recursive_directory_iterator ném ngoại lệ
- 7. Ngoại lệ ném
- 8. ném ngoại lệ
- 9. BeginInvoke ném ngoại lệ
- 10. WebAuthenticationBroker.AuthenticateAsync ném ngoại lệ
- 11. autoFocus ném ngoại lệ
- 12. TransactionScope ném ngoại lệ
- 13. LLVM ngoại lệ ném
- 14. Ném ngoại lệ trong bộ xử lý ngoại lệ
- 15. GWT: cầu cảng ném ngoại lệ nullpointer về gỡ lỗi
- 16. Có thể Monitor.Enter ném một ngoại lệ?
- 17. Ném và bắt ngoại lệ
- 18. WebDriver getText ném ngoại lệ
- 19. Node.js - yêu cầu không được xác định ngoại lệ
- 20. wait() trên Servlet ném ngoại lệ
- 21. C# finalizer ném ngoại lệ?
- 22. C# Ngoại lệ ném lại
- 23. Worksheet get_Range ném ngoại lệ
- 24. VS2010 thêm tập tin mới ném Đặt thuộc tính 'System.Windows.ResourceDictionary.DeferrableContent' ném một ngoại lệ
- 25. JsonValueProviderFactory ném "yêu cầu quá lớn"
- 26. Ném nhiều ngoại lệ trong .Net/C#
- 27. Giao diện Java ném ngoại lệ nhưng việc triển khai giao diện không ném ngoại lệ?
- 28. Khi trả lại bool, hãy ném ngoại lệ và ngoại lệ nào để ném
- 29. Có phải "ném ngoại lệ" thực hành không tốt?
- 30. Ngoại lệ gì để ném khi thoát khỏi chuỗi bất ngờ?
Tôi tự hỏi điểm của ngoại lệ là gì nếu nó không gây ra sự bẻ khóa (cho đến khi các điều kiện thích hợp, ví dụ như 'bắt', ngăn chặn nó từ ngăn nói) ... –
_Khi ngoại lệ là ném, mã theo tuyên bố sẽ không được thực hiện, và PHP sẽ cố gắng tìm khối catch khớp đầu tiên. Nếu một ngoại lệ không bị bắt, Lỗi PHP Fatal sẽ được phát hành với một thông báo "Uncaught Exception ...", trừ khi một trình xử lý đã được định nghĩa với set_exception_handler() ._ [Từ tài liệu.] (Http: // php. net/manual/en/language.exceptions.php) –