Program Club

PHP Try Catch 블록에서 예외 발생

proclub 2020. 11. 6. 20:56
반응형

PHP Try Catch 블록에서 예외 발생


Drupal 6 .module 파일에 PHP 기능이 있습니다. 더 집중적 인 작업 (예 : 데이터베이스 쿼리)을 실행하기 전에 초기 변수 유효성 검사를 실행하려고합니다. C #에서는 유효성 검사가 실패하면 새 예외를 발생시키는 Try 블록의 시작 부분에 IF 문을 구현했습니다. throw 된 예외는 Catch 블록에서 포착됩니다. 다음은 내 PHP 코드입니다.

function _modulename_getData($field, $table) {
  try {
    if (empty($field)) {
      throw new Exception("The field is undefined."); 
    }
    // rest of code here...
  }
  catch (Exception $e) {
    throw $e->getMessage();
  }
}

그러나 코드를 실행하려고하면 Catch 블록 내에서만 객체를 던질 수 있다는 메시지가 표시됩니다.

미리 감사드립니다!


function _modulename_getData($field, $table) {
  try {
    if (empty($field)) {
      throw new Exception("The field is undefined."); 
    }
    // rest of code here...
  }
  catch (Exception $e) {
    /*
        Here you can either echo the exception message like: 
        echo $e->getMessage(); 

        Or you can throw the Exception Object $e like:
        throw $e;
    */
  }
}

다시 던지려면

 throw $e;

메시지가 아닙니다.


throwcatch 블록에서를 제거하기 만하면됩니다.로 변경 echo하거나 오류를 처리하십시오.

객체는 catch 블록 에서만 던질 수 있다는 것을 말하는 것이 아니라 객체 만 던질 수 있으며 오류의 위치는 catch 블록에 있다는 것을 의미합니다. 차이가 있습니다.

catch 블록에서 방금 잡은 무언가를 던지려고합니다.이 문맥에서는 어차피 의미가 없습니다. 던지려는 것은 문자열입니다.

당신이하고있는 일의 실제 비유는 공을 잡은 다음 제조업체의 로고 만 다른 곳에 던지는 것입니다. 객체의 속성이 아닌 전체 객체 만 던질 수 있습니다.


throw $e->getMessage();

당신은 던지려고 string

참고 : 예외는 일반적으로 유효성 검사 후 오류 메시지가 아닌 응용 프로그램의 예외 상태를 정의하는 것입니다. 사용자가 잘못된 데이터를 제공하는 경우도 예외는 아닙니다.


Throw는에 의해 인스턴스화 된 객체가 필요합니다 \Exception. 그냥 $e사로 잡았 트릭을 재생할 수 있습니다.

throw $e

참고 URL : https://stackoverflow.com/questions/9041173/throwing-exceptions-in-a-php-try-catch-block

반응형