source

PHP Try Catch 블록에 예외 발생

lovecheck 2022. 11. 19. 11:43
반응형

PHP Try Catch 블록에 예외 발생

Drupal 6 . module 파일에 PHP 기능이 있습니다.보다 부하가 높은 태스크(데이터베이스 쿼리 등)를 실행하기 전에 초기 변수 검증을 실행하려고 합니다.C#에서는 검증에 실패했을 경우 새로운 예외를 발생시키는 IF 문을 Try 블록의 선두에 실장했습니다.느려진 예외는 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 block에서 catch block으로 변경합니다.echo그렇지 않으면 오류를 처리합니다.

오브젝트는 캐치블록에만 던질 수 있는 것이 아니라 오브젝트만 던질 수 있으며 에러의 위치는 캐치블록에 있습니다.차이가 있습니다.

캐치블록에서는 방금 잡은 것을 던지려고 합니다.이 문맥에서는 의미가 거의 없습니다만, 던지려고 하는 것은 스트링입니다.

실제로 여러분이 하고 있는 일의 비유는 공을 잡고 제조사의 로고만 다른 곳에 던지려고 하는 것입니다.개체의 속성이 아닌 전체 개체만 던질 수 있습니다.

네가 던지려고 했어string:

throw $e->getMessage();

구현된 개체만 던질 수 있습니다.\Throwable,예.\Exception.

사이드노트로:예외는 일반적으로 응용 프로그램의 예외 상태를 정의하는 것이며 검증 후 오류 메시지에 대한 예외는 아닙니다.사용자가 잘못된 데이터를 제공하는 경우도 예외는 아닙니다.

Throw에는 다음 항목에 의해 인스턴스화된 개체가 필요합니다.\Exception.그냥...$e캐치드도 할 수 있어요.

throw $e

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

반응형