이것은 오래된 질문이지만이 메시지가 발생할 수있는 또 다른 미묘한 방법이 있습니다. 여기 문서에서 꽤 잘 설명 되어 있습니다.
이 scenerio를 상상해보십시오.
try {
// code that triggers a pdo exception
} catch (Exception $e) {
throw new MyCustomExceptionHandler($e);
}
그리고 MyCustomExceptionHandler
대략 다음과 같이 정의됩니다.
class MyCustomExceptionHandler extends Exception {
public function __construct($e) {
parent::__construct($e->getMessage(), $e->getCode());
}
}
Exception
클래스가 생성자의 두 번째 매개 변수에 대한 숫자를 예상하고 있지만 PDOException
의 반환 유형을 $e->getCode()
문자열 로 동적으로 변경했을 수 있기 때문에 이것은 실제로 사용자 지정 예외 처리기에서 새 예외를 트리거 합니다.
이에 대한 해결 방법은 다음과 같은 사용자 지정 예외 처리기를 정의하는 것입니다.
class MyCustomExceptionHandler extends Exception {
public function __construct($e) {
parent::__construct($e->getMessage());
$this->code = $e->getCode();
}
}
$_GET['start_date']
포함 된 내용을 게시해야합니다 .