오류 처리(1)

minah moon·2023년 8월 22일

PHP

목록 보기
38/58
post-thumbnail

오류 레벨과 유형

Error: description goes here in test.php on line21
// 레벨: 설명 in 파일 경로 on 줄 번호

1. 구문 오류

구문 오류는 코드 구문의 문제로 인해 발생한다. 이것은 PHP 인터프리터가 코드를 이해할 수 없기 때문에 페이지가 화면에 표시되지 않게 한다. 코드를 실행하려면 구문 오류를 고쳐야 한다.

2. 치명적인 오류

PHP 인터프리터가 더 이상 코드를 처리하지 못하게 하는 문제를 발견하면 치명적인 오류가 발생한다. 이것은 사용자가 치명적인 오류가 발견된 지점까지의 일부 페이지만 볼 수 있다는 의미다.

3. 치명적이지 않은 오류

PHP 인터프리터가 생각할 때 문제가 될 수 있지만 나머지 코드를 계속 실행할 수 있을 때 치명적이지 않은 오류가 발생한다. 경고warning는 문제가 될 수 있는 오류가 있음을 나타내며 알림notice은 오류가 있을 수 있음을 나타낸다.


오류 처리 함수

PHP 인터프리터가 치명적 또는 치명적이지 않은 오류를 발생시키면 에러 핸들러라는 사용자 정의 함수를 호출할 수 있다. 라이브 사이트에서 이 함수는 비어 있거나 중간에 잘린 페이지를 사용자에게 표시하지 않도록 해준다.

1. 치명적이지 않은 오류 처리하기

PHP 인터프리터가 치명적이지 않은 오류를 발생시켜도 파일의 나머지 부분은 계속 실행되겠지만 심각한 문제를 일으킬 수 있다.

일반적으로 오류를 수정하려면 코드를 변경해야 한다. 이러한 오류가 수정되기 전까지 치명적이지 않은 오류를 다루는 에러 핸들링 함수를 사용할 수 있다.

set_error_handler('name')

PHP의 내장 함수인 set_error_handler()는 치명적이지 않은 오류가 발생할 때 호출되는 사용자 정의 함수명을 PHP 인터프리터에 알려준다. set_error_handler()에 실행해야 하는 에러 핸들링 함수명을 괄호 없이 알려준다.

예를 들어, 사용자 친화적인 메시지를 표시하고 코드 실행을 중지하는 함수가 될 수 있다.

두 번째 매개변수로 에러 핸들러가 작동하는 오류 레벨을 지정할 수 있지만, PHP를 배울 때는 치명적이지 않은 모든 오류에 대해 사용하는 것이 좋다.

2. 치명적인 오류 처리하기

치명적인 오류는 페이지 실행을 멈추며 set_error_handler()에 지정한 함수가 실행되지 않는다.

PHP 7부터 PHP 인터프리터는 가장 치명적인 오류를 예외로 변환했다. 치명적인 오류가 예외로 변환되고 처리되지 않는다면 다시 치명적인 오류로 돌아간다.

페이지 실행이 완료되거나 exit 명령이 사용되거나 치명적인 오류가 페이지 실행을 중지할 때마다 셧다운 함수라는 사용자 정의 함수를 지정할 수 있다.

register_shutdown_function('name')

셧다운 함수는 페이지가 실행되는 동안 오류가 있었는지 확인할 수 있으며, 그랬다면 사용자 친화적인 오류 메시지를 표시하고 오류를 로그 파일에 기록할 수 있다. PHP의 register_shutdown_function 함수는 페이지가 실행을 멈출 때 호출할 함수의 이름을 PHP 인터프리터에 알려준다. 셧다운 함수의 이름을 지정할 때 괄호가 있으면 안 된다.






출처 - 존 두켓, <백엔드 프로그래밍을 위한 PHP & MySQL>, Jpub, 2022

0개의 댓글