백엔드 개발 PHP 튜토리얼 php_php 기술의 예외 처리 방법 요약

php_php 기술의 예외 처리 방법 요약

May 16, 2016 pm 08:25 PM
php 다루다 이상 방법

이 기사의 예에는 PHP의 예외 처리 방법이 요약되어 있습니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.

예외가 발생하면 일반적으로 발생합니다. PHP5에는 다른 언어와 유사한 오류 예외 처리 모듈이 추가되었습니다. PHP 코드에서 생성된 예외는 throw 문에 의해 발생되고 catch 문에 의해 포착될 수 있습니다. 예외 처리가 필요한 코드는 가능한 예외를 포착하기 위해 try 코드 블록에 배치되어야 합니다. 모든 시도에는 해당하는 캐치가 하나 이상 있어야 합니다.

다양한 캐치를 사용하여 다른 클래스에서 생성된 예외를 포착합니다. try 코드 블록이 더 이상 예외를 발생시키지 않거나 던져진 예외와 일치하는 캐치를 찾을 수 없으면 PHP 코드는 캐치 후 마지막 항목으로 점프합니다. 물론, PHP는 catch 코드 블록 내에서 예외가 다시 발생하도록 허용합니다. 예외가 발생하면 후속 코드(번역자 참고 사항: 예외가 발생한 코드 블록을 나타냄)는 계속해서 실행을 시도하지 않습니다. 첫 번째로 일치하는 catch를 찾습니다. 예외가 포착되지 않고 해당 처리에 set_Exception_handler()를 사용할 필요가 없으면 PHP는 심각한 오류를 생성하고 Uncaught Exception ...(잡히지 않은 예외) 프롬프트 정보를 출력합니다.

1. 예외 클래스의 계층 관계는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
class NotFoundException은 Exception을 확장합니다.{}

InputException 클래스가 Exception을 확장함{}

클래스 DBException은 예외를 확장합니다.{}

2. 포착되지 않은 예외에 대한 핸들러를 구성합니다. 코드는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
function 예외_uncaught_handler(Exception $e) { 
header('Content-type:text/html; charset=utf-8')
if ($e 인스턴스of NotFoundException)
종료($e->getMessage())
elseif($e DBException 인스턴스)
종료($e->getMessage())
그렇지 않으면
종료($e->getMessage())

set_Exception_handler('Exception_uncaught_handler');

3. 데이터베이스 연결 코드에서 DBException을 수동으로 발생시켰지만 이를 잡기 위해 try...catch를 사용하지 않은 경우 해당 예외는 PHP 사용자 정의 예외 처리기인 예외_uncaught_handler() 함수에 의해 처리됩니다.
코드 복사 코드는 다음과 같습니다.
$this->resConn = mysql_connect ($CONFIGS['db_host' ], $ CONFIGS['db_user'], $CONFIGS['db_pwd'])
if (false == is_resource($this->resConn))
throw new DBException('데이터베이스 연결에 실패했습니다.'.mysql_error($this->resConn));

4. 비즈니스 로직 개요:
코드 복사 코드는 다음과 같습니다.
if (0 != strcmp($curAlbum->interest_id, $ 그것))

새 NotFoundException 발생('죄송합니다. 방문한 앨범이 존재하지 않습니다.');

위는 PHP 사용자 정의 예외 처리기를 사용하는 구체적인 방법입니다.

php 예제 코드는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
클래스 customException은 예외를 확장합니다
{
공개 함수 errorMessage()
{
//오류 메시지
$errorMsg = ''.$this->getLine() 줄에 오류가 있습니다.' '.$this->getFile()
.': '.$this->getMessage().' 유효한 이메일 주소가 아닙니다';
$errorMsg를 반환합니다.
}
}
 
$email = "someone@example.com";
 
시도해 보세요
 {
 //다음인지 확인하세요.
 if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE)
  {
  //이메일이 유효하지 않으면 예외 발생
  새로운 customException($email)을 던져라;
  }
 //메일 주소에서 "예제"를 확인하세요
 if(strpos($email, "예제") !== FALSE)
  {
  throw new Exception("$email은 이메일의 예입니다.");
  }
 }
 
잡기(customException $e)
 {
 echo $e->errorMessage();
 }
 
catch(예외 $e)
 {
 echo $e->getMessage();
 }
?>

例子 解释:상면적 代码测试了两种条件,如何任何条件不成立,则抛出一个异常.

1.customException()은 예외를 발생시키는 데 사용되는 모든 예외를 확장하는 데 사용됩니다.

2.创建 errorMessage() 函数,如果 이메일 地址不합법,则该函数返回一个错误消息.

3.执行 "시도" 代码块,지금 第一个条件下,不会抛流异常.

4.由于 이메일 含有字符串 "예",第二个条件会触发异常.

5."잡다" 代码块会捕获异常,并显示恰当的错误消息.

如果没有捕获 customException, 紧紧捕获了 기본 예외, 则紧捕获了 기본 예외, 则在那里处理异常, 重新抛take异常,有时,当异常被抛以时,您也许希望以于标准的方式对它进行处理,可以在一个 "catch" 代码块中再次抛流异常,代码如下:

总结:PHP异常적 사용 방법 분리:

第二步:当流异常时用 throw 抛流异常,例如 ex1($num2);异常的参数是$num2用该异常的getMessage()获取;

第三步:触发异常,用try子句,当满足条件时  throw new ex1($num);

第4步:catch捕获异常 catch (ex2 $e), 同当于实例化一个determin义好的异常类ex2为$e;

注意,异常可以定义多个,但是只能触发一个,也就是说只能用catch捕获一个异常.

基本异常类,创建可抛出一个异常的函数:


复代码 代码如下:
함수 num($num){
if ($num>1){//예외 발생 조건
$msg="값은 1보다 클 수 없습니다.";//예외 메시지
새로운 예외 발생($msg);//예외 발생
}
echo "1보다 작은 수"; }
//"try" 코드 블록에서 예외 발생
{
을 시도해 보세요. 숫자(3); echo "정상적으로 실행되었습니다."
}
//예외 잡기
잡기(예외 $e){
echo "오류 메시지:".$e->getMessage();//Exception() 예외 정보를 얻기 위한 시스템 메소드
echo "오류 파일:".$e->getFile();//Exception()의 시스템 메소드가 예외 파일 이름을 가져옵니다
echo "라인 수:".$e->getLine();//Exception()의 시스템 메소드는 예외 라인 수를 가져옵니다
}
//================================================ ======================
에코 "
========================================== ============
";
//기본 예외 클래스 확장
function checkEmail($email){//EMAIL의 유효성을 확인하기 위해 예외를 발생시킬 수 있는 함수 정의
if (filter_var($email,FILTER_VALIDATE_EMAIL)==false){
새로운 checkEmailException($email)을 발생시킵니다.//예외를 발생시키고 EMAIL을 매개변수로 사용합니다
}
echo "이메일은 합법적입니다."; }
class checkEmailException은 예외를 확장합니다.{//확장 예외 클래스 정의
공개 함수 errormsg(){
$msg="오류 이유: ".$this->getMessage()."는 합법적인 이메일 주소가 아닙니다!"; $msg.="파일 이름 오류:".$this->getFile()
$msg.="줄 번호 오류:".$this->getLine()
에코 $msg; }
}
$email="이메일…..@chhua.com"
try {//예외 트리거
checkEmail($이메일)
}
//예외 잡기
catch(checkEmailException $e){
$e->errormsg()
}
//================================== 여러 예외 캡처
에코 "
========================================== =======
";
class ex1 extends Exception{//예외 클래스 정의
공개 함수 msg(){
$msg="오류 이유: ".$this->getMessage()."가 100보다 큼"
$msg.="오류 파일:".$this->getFile()."
"
$msg.="오류 코드:".$this->getCode()."
"
$msg.="줄 수:".$this->getLine()."
"
에코 $msg; }
}
class ex2 extends Exception{//예외 클래스 정의
         공개 함수 msg(){
$msg="오류 이유: ".$this->getMessage()."는 100과 같습니다."
$msg.="오류 파일:".$this->getFile()."
"
$msg.="줄 수:".$this->getLine()."
"
에코 $msg; }
}
$num2=100; {
을 시도해 보세요. if ($num2>100){//조건이 충족되면 트리거
새로운 ex1($num2) 던지기
}
if ($num2==100){//조건이 충족되면 트리거됨
새로운 ex2($num2) 던지기
}
}
catch (ex2 $e){//트리거된 예외 잡기
$e->msg()
}
catch (ex1 $e){//트리거된 예외 잡기
$e->msg()
}


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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

CakePHP 프로젝트 구성 CakePHP 프로젝트 구성 Sep 10, 2024 pm 05:25 PM

이번 장에서는 CakePHP의 환경 변수, 일반 구성, 데이터베이스 구성, 이메일 구성에 대해 알아봅니다.

Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Dec 24, 2024 pm 04:42 PM

PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP 날짜 및 시간 CakePHP 날짜 및 시간 Sep 10, 2024 pm 05:27 PM

cakephp4에서 날짜와 시간을 다루기 위해 사용 가능한 FrozenTime 클래스를 활용하겠습니다.

CakePHP 파일 업로드 CakePHP 파일 업로드 Sep 10, 2024 pm 05:27 PM

파일 업로드 작업을 위해 양식 도우미를 사용할 것입니다. 다음은 파일 업로드의 예입니다.

CakePHP 라우팅 CakePHP 라우팅 Sep 10, 2024 pm 05:25 PM

이번 장에서는 라우팅과 관련된 다음과 같은 주제를 학습하겠습니다.

CakePHP 토론 CakePHP 토론 Sep 10, 2024 pm 05:28 PM

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

CakePHP 유효성 검사기 만들기 CakePHP 유효성 검사기 만들기 Sep 10, 2024 pm 05:26 PM

컨트롤러에 다음 두 줄을 추가하면 유효성 검사기를 만들 수 있습니다.

PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 Dec 20, 2024 am 11:31 AM

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

See all articles