Tôi dám nói đó là một lỗi. Tôi đã tìm thấy hai vé có liên quan:
- Lỗi # 63812 :(Các) Cảnh báo về Trình kích hoạt PDO Bất kể Chiến lược Xử lý Lỗi, được nộp vào năm 2012 cho PHP / 5.3.19
- Lỗi # 74401 :Cảnh báo kích hoạt PDO đã đặt ngoại lệ ném, được nộp vào năm 2017 cho PHP / 7.0.17
Trong mọi trường hợp, chúng vẫn đang mở và không hoàn toàn rõ ràng liệu chúng có phải là vấn đề hợp lệ hay không (mặc dù tôi nghi ngờ là có). Nó dường như không phải là một quyết định thiết kế vì các lỗi MySQL khác không kích hoạt cả hai, cảnh báo và ngoại lệ:
$connection = new PDO('mysql:host=127.0.0.1;dbname=test', 'test', 'test',
[PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING]);
$connection->query('SELECT * FROM foo');
$connection = new PDO('mysql:host=127.0.0.1;dbname=test', 'test', 'test',
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
$connection->query('SELECT * FROM foo');