>백엔드 개발 >PHP 문제 >PHP의 오류 메시지와 예외 메시지의 차이점

PHP의 오류 메시지와 예외 메시지의 차이점

(*-*)浩
(*-*)浩원래의
2019-09-06 10:32:492430검색

PHP의 오류 메시지와 예외 메시지의 차이점

PHP에서 예외란 무엇입니까?

프로그램이 실행 중일 때 예상치 못한 상황이 발생하는 것은 허용되지만(비정상적인 상황이 발생하는 것을 원하지 않음) 비정상적인 상황입니다. 일반적인 논리에서는 발생하지 않아야 하지만 여전히 발생하는 오류는 컴파일이나 구문 오류가 아닌 논리 및 비즈니스 프로세스의 오류입니다.

PHP의 오류는 무엇입니까: (추천 학습: PHP 프로그래밍 입문부터 숙달까지)

PHP 스크립트 자체의 문제입니다. 대부분 잘못된 구문과 서버 환경으로 인해 발생합니다. 이로 인해 컴파일러가 검사를 통과하지 못하거나 작동하지 못하게 됩니다. Warning과 주의사항은 모두 오류이지만 수준이 다르며 try-catch로는 오류를 잡을 수 없습니다.

위 명령문에는 전제 조건이 있습니다.

PHP에서는 이 결론을 다른 언어로 도출할 수 없기 때문에 즉, 예외와 오류는 언어마다 다른 용어를 사용합니다.

PHP에서는 모든 오류나 비정상적인 코드가 오류로 처리되어 예외 형태로 발생하지 않습니다. 그러나 예외와 오류가 동시에 발생하는 상황도 있습니다. 올바른 예를 찾지 못했습니다.)

즉, 데이터베이스 연결이 실패할 때 자동으로 예외를 catch하려는 경우 작동하지 않습니다. 이는 예외가 아니라 오류이기 때문입니다. 그러나 Java에서는 예외로 예상과 일치하지 않는 많은 동작을 캡처합니다.

PHP 예외 처리는 쓸모가 없나요?

위 분석에서 PHP는 예외를 적극적으로 발생시킬 수 없지만 수동으로 예외를 발생시킬 수 있다는 것을 알 수 있습니다. 이는 문제가 어디로 갈지 안다면 이를 해결하기 위해 추가할 수 있습니다. 충분하지 않습니까? 수동으로 예외를 발생시켜야 하는 이유는 무엇입니까? 수동으로 발생시킬 수 있으므로 이는 예외가 아니지만 예상되는 현상입니다.

제가 이해한 바로는 PHP 예외 처리가 쓸모가 없는 부분입니다(반드시 정확하지는 않음). 따라서 PHP의 예외 메커니즘은 그다지 완벽하지는 않지만 프레임워크를 사용해 본 학생들은 모두 이 상황을 알고 있습니다. 프레임워크에서 PHP "자동" 예외 캡처 시작 부분에 코드를 직접 작성해도 괜찮습니다. ?

소스 코드를 읽은 학생들은 프레임워크에 세 가지 함수(register_shutdown_function, set_error_handler, set_Exception_handler), 세 가지 블랙 기술이 관련되어 있다는 것을 알고 있습니다. 이러한 함수를 통해 우리는 PHP의 예외 및 오류 자동 캡처를 실현할 수 있습니다.

예외 형식으로 오류 발생(완전히 발생시킬 수 없음)

위의 설명에서 우리는 PHP의 오류가 예외 형식으로 캡처될 수 없다는 것을 알고 있지만 예외가 발생하도록 허용해야 하며 확장은 try-catch의 영향 범위에 도달했습니다. set_error_handler() 메서드는 무엇을 위해 사용됩니까? 이 메서드를 사용하여 오류를 캡처한 다음 예외 형태로 던질 수 있습니다. 좋아, 다음과 같이 작성해 보세요:

<?php
    set_error_handler(&#39;error&#39;);
    function error($type, $message, $file, $line)
    {
        throw new \Exception($message . &#39;错误当做异常&#39;);
    }

    $num = 0;
    try {
        echo 1/$num;

    } catch (Exception $e){
        echo $e->getMessage();
    }
?>

PHP에서는 오류가 발생할 수 있는 곳에 단순히 예외를 발생시키지 않는 것이 가장 좋습니다. 일부 프레임워크에서는 위의 메서드를 다시 작성하여 예외와 오류를 정상적으로 발생시킬 수 있습니다

위 내용은 PHP의 오류 메시지와 예외 메시지의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.