php 이상 처리

전면적 인 지식 은 참고 하 시기 바 랍 니 다.http://www.w3school.com.cn/php/php_exception.asp
다음은 자신의 인식 이다.
php 의 이상 은 기본적으로 이렇다.
<?php
class customException extends Exception
 {
 public function errorMessage()
  {
  //error message
  $errorMsg = 'Error on line '.$this->getLine().' in '.$this->getFile()
  .': <b>'.$this->getMessage().'</b> is not a valid E-Mail address';
  return $errorMsg;
  }
 }

$email = "[email protected]";

try
 {
 //check if 
 if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE)
  {
  //throw exception if email is not valid
  throw new customException($email);
  }
 }

 catch(Exception $e) {
     echo "hi";
 }

catch (customException $e)
 {
 //display custom message
 echo $e->errorMessage();
 }
?>

throw new Exception (...) 이 라면 다른 이상 을 구분 하고 싶 지 않다 는 뜻 이다.넓 은 범위 에서 catch 는 누가 생 겼 는 지 모 릅 니 다. (물론 입 니 다. 이 건 아 닙 니 다. 위의 프로그램 getline, getfile 은 어디서 이상 이 발생 했 는 지 알 수 있 기 때 문 입 니 다.)그러나 구분 하지 않 으 면 유형 별 이상 을 구분 할 수 없다.일반적인 잘못 인지 치 명 적 인 잘못 인지 구분 할 수 없다.
구분 하려 면 서로 다른 이상 유형 을 정의 해 야 한다.사용자 정의 가능.위의 코드 가 구현 되 었 다.
try 한 번 에 catch 여러 번 가능 합 니 다.부류 이상 은 부류 이상 을 받 아들 일 수 있다.그래서 여러 catch 의 배열 은 하위 클래스 가 앞 에 있어 야 합 니 다.자 류 를 뒤에 두 면 자 류 는 영원히 catch 를 생각 하지 마 세 요.
catch 처리 프로그램 에서 임의의 종류의 이상 을 다시 던 질 수 있 습 니 다.
여러 개의 try 를 끼 워 넣 을 수 있 습 니 다.전체 try.내부 적 으로 는 세밀 한 try 처리 도 가능 합 니 다.내부 에서 해결 할 수 있 는 잘못 은 전체 국면 에 던 져 해결 하지 않 는 다.
원칙: 던 지 는 것 이 있 으 면 반드시 잡 아야 한다.
php 이상 을 더 완전 하 게 나타 내 는 코드 는 다음 과 같 습 니 다.
<?php
class customException extends Exception
 {
 public function errorMessage()
  {
  //error message
  $errorMsg = $this->getMessage().' is not a valid E-Mail address.';
  return $errorMsg;
  }
 }

$email = "[email protected]";

try
 {
 try
  {
  //check for "example" in mail address
  if(strpos($email, "example") !== FALSE)
   {
   //throw exception if email is not valid
   throw new Exception($email);
   }
  }
 catch(Exception $e)
  {
  //re-throw exception
  throw new customException($email);
  }
 }

catch (customException $e)
 {
 //display custom message
 echo $e->errorMessage();
 }
?>

ps:
php 에서 반환 값 표징 프로그램 을 사용 하 는 것 이 잘못된 지 c + + 에 대해 장점 을 가지 고 싶 습 니 다.php 는 유형 을 엄격하게 구분 하지 않 습 니 다.반환 오류 return - 1.오류 가 없 으 면 데 이 터 를 정상적으로 되 돌려 줍 니 다.이렇게 하면 프로그램 이 잘못 되 었 는 지 여 부 를 판단 할 수 있다.c + + 에 서 는 그 럴 리 가 없어 요.데 이 터 를 되 돌려 주거 나 오류 코드 를 되 돌려 줍 니 다.c + + 반환 값 을 통 해 오 류 를 판단 하려 면 정말 원 하 는 데 이 터 를 매개 변수 목록 에 넣 을 수 밖 에 없습니다.불편 을 초래 하 다.
php 는 천연 적 인 장점 이 있 지만 반환 치 를 이용 하 는 것 은 불편 하 다.맨 안쪽 에 있 는 층 이 잘못 되 었 습 니 다. - 1 로 돌아 갑 니 다. 뒤의 층 마다 이 값 을 계속 전달 해 야 합 니 다.어렵 지 는 않 지만, 원래 이렇게 해 야 했다.하지만 실수 하기 쉬 울 수 있 습 니 다.이상 을 던 지 는 것 이 라면, 바로 해결 된다.층 마다 데 이 터 를 사용 할 때 - 1 여 부 를 판단 하지 않 아 도 됩 니 다.이렇게 하면 논리 가 더욱 분명 해 질 것 이다.결합 도가 떨어지다.c + + 에 대한 복음 입 니 다. 데 이 터 를 되 돌려 줄 수 있 습 니 다.
이상 을 사용 하려 면 상속 을 어떻게 하 는 지, 이상 류 는 어떤 방법 이 있 는 지, 상속 체계, 내 장 된 이상 유형 등 을 알 아야 한다.나머지 는 많이 쓰 는 거 야.

좋은 웹페이지 즐겨찾기