Khi một ngoại lệ được ném, PHP không thể quay lại dòng mã xuất hiện sau dòng đã ném ngoại lệ. Bắt một ngoại lệ không thay đổi gì về vấn đề này. Ném một ngoại lệ là một vé một chiều
Không giống như các lỗi, các ngoại lệ không có khả năng phục hồi từ chúng và làm cho PHP tiếp tục thực thi mã như thể không có ngoại lệ nào cả
Do đó PHPUnit thậm chí không đến được nơi
$this->expectException[\InvalidArgumentException::class];
nếu nó được đi trước bởi
throw new \InvalidArgumentException[];
Hơn nữa, PHPUnit sẽ không bao giờ có thể đạt được vị trí đó, bất kể khả năng bắt ngoại lệ của nó.
Do đó, sử dụng bất kỳ phương pháp kiểm tra ngoại lệ nào của PHPUnit
$this->expectException[string $exceptionClassName];
$this->expectExceptionCode[int|string $code];
$this->expectExceptionMessage[string $message];
$this->expectExceptionMessageMatches[string $regularExpression];
$this->expectExceptionObject[\Exception $exceptionObject];
phải ở trước một mã trong đó một ngoại lệ dự kiến sẽ được đưa ra trái ngược với một xác nhận được đặt sau khi một giá trị thực được đặt
Một thứ tự thích hợp của việc sử dụng kiểm tra ngoại lệ