웹사이트의 완전 개방형 특성으로 인해 웹사이트는 기존 소프트웨어보다 "시스템이 항상 정상적으로 작동하는 것"을 달성하기를 원하므로 올바른 프로그램 오류 처리 방법을 채택하는 것이 특히 중요합니다. 이론적으로 디자인이 완벽하고 개발자가 주의를 기울이면 프로그램 오류가 발생할 가능성은 0입니다.
그러나 사실은 그 반대입니다. 복잡한 비즈니스 로직, 다른 하드웨어 환경 또는 신뢰할 수 없는 사용자 입력으로 인해 프로그램이 발생할 수 있습니다. 오류가 발생하여 서비스가 중단되었습니다. 따라서 약간 복잡한 시스템에서는 완전한 오류 메커니즘이 필요합니다.
php5 이전에는 예외 지원이 부족했습니다. 복잡한 개발을 할 때에는 "에러값 처리 및 로그 기록"이라는 비교적 원시적인 처리 형태를 채택하는 경우가 많습니다.
예:
코드 복사 코드는 다음과 같습니다.
function getResult($a,$b)
{
.......
심각한 오류가 발생한 경우
return "error_type1"
.....
}
$result = getResult($ a,$b );//이론적으로 getResult 함수는 항상 $result를 올바르게 반환할 수 있습니다.
if($result=='error_type1')//그러나 일부 특수한 경우에는 $result를 정상적으로 얻을 수 없습니다.
{
writeLog ('결과가 비어 있습니다!');//로그 기록
die();//또는 더 "친숙한" 다른 처리 방법
}
이론적으로는 다음을 통해 " 오류 값을 처리하는 "로그" 방법도 우리의 목표를 달성할 수 있습니다(사실 이는 사실입니다. php3 및 php4에서는 성공적이고 충분히 복잡한 많은 시스템이 나타났습니다. 심지어 모든 상황을 고려하므로 필요가 없습니다. 모든 로그를 기록합니다. 그러나 기술은 항상 발전할 것이고, 대다수의 개발자가 뛰어난 사람만큼 엄격하고 빈틈없는 사고방식을 가지고 있지 않다는 점은 말할 것도 없고, 우리는 여전히 "프로그램 오류를 어떻게 처리할 것인가"에 대한 문제를 진지하게 생각해야 합니다.
위의 "오류 처리 및 로깅" 방법에는 다음과 같은 단점이 있습니다.
1 오류 상황이 너무 많으면 해당 오류 처리 코드를 많이 추가해야 하므로 프로그램의 가독성이 크게 손상됩니다. 귀하의 프로그램은 "불규칙"해 보입니다.
2 프로그램의 논리가 매우 복잡한 경우(예: getResult2() 함수에서 getResult()를 호출하는 등 프로그램의 함수 호출이 매우 복잡하거나 더 복잡한 다중 레벨 중첩 상황) , 오류 값이 전송됩니다. 처리하면 지칠 수 있습니다. 오류를 효과적으로 처리하려면 다음 사항을 확인해야 합니다. 오류 값이 손실 없는 방식으로 전달됩니다.
그러므로 이 기본 오류 처리 방법을 변경하세요. 예외 처리 메커니즘을 도입하면 만족스러운 변화를 발견할 수 있습니다.
1 코드 가독성이 크게 향상되었습니다. 프로그램을 개발할 때 논리적 사고는 매우 일관되게 됩니다. "의심스러운" 위치에서는 예외만 발생시키면 됩니다. 처리 방법은 나중에 추가할 때까지 기다리시면 됩니다. 물론 프로그램 독자들은 방해를 느끼지 않을 것입니다.
2 "어떻게 오류값을 손실 없이 전송할 것인가"라는 힘들고 불쾌한 문제를 고려할 필요가 없습니다. 예외가 상향 전파되므로 함수가 2, 3개 이상의 레이어 깊이로 중첩되어 있어도 문제가 없습니다. 외부 계층에서 예외를 포착하는 작업만 있으면 됩니다.
3가지 예외를 자유롭게 사용자 정의할 수 있습니다. 다양한 프로그램 오류를 보다 효과적으로 관리하기 위해 예외를 기능별로 분류할 수 있습니다. 동시에 예외 처리 방법을 보다 유연하게 사용자 정의할 수도 있습니다. 예를 들어 예외 클래스에 로그 기록 기능을 구현합니다.
물론, 예외 사용 여부는 필요에 따라 다릅니다. PHP의 특징 중 하나는 배포가 빠르다는 점입니다. 간단한 로직으로 구성된 소규모 프로젝트라면 일반적인 오류 값 처리 방법을 사용하여 배포하는 것이 더 빠를 수도 있습니다.
위 내용은 배양 컴퓨터 프로그래머에 대한 소개입니다. PHP 프로그래머는 배양 컴퓨터 프로그래머의 내용을 포함하여 "예외" 사용법도 배워야 합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.