>  기사  >  백엔드 개발  >  PHP 예외 처리 클래스 사용 예 Exception

PHP 예외 처리 클래스 사용 예 Exception

WBOY
WBOY원래의
2016-07-25 09:05:311277검색
  1. class Exception
  2. {
  3. protected $message = '알 수 없는 예외' // 예외 메시지
  4. protected $code = 0; //사용자 정의 예외 코드
  5. protected $file; //예외가 발생한 파일 이름
  6. protected $line; //예외가 발생한 코드의 줄 번호
  7. function __construct ($message = null, $code = 0);
  8. final function getMessage(); // 예외 정보 반환
  9. final function getCode() // 예외 코드 반환
  10. final function getFile(); / 예외가 발생한 파일을 반환합니다. Name
  11. final function getLine(); // 예외가 발생한 코드 줄 번호를 반환합니다.
  12. final function getTrace() // backtrace() array
  13. final function getTraceAsString (); // 문자로 형식화됨 String getTrace() 정보
  14. /* 오버로드 가능한 메서드*/
  15. function __toString() // 출력 가능한 문자열
  16. }
  17. ?>
코드 복사

간단한 예: (예외를 통해 오류 메시지 표시)

  1. try {
  2. $error = 'my error!';
  3. throw new Exception($error)
  4. } catch(예외 $e) {
  5. echo $e->getMessage();
  6. }
코드 복사

2. 이 유형

  1. class MyException은 Exception을 확장합니다
  2. {
  3. // 메시지를 지정해야 하도록 생성자를 재정의합니다 속성
  4. public function __construct($message, $code = 0) {
  5. //사용자 정의 코드
  6. // 모든 변수가 올바르게 할당되었는지 확인
  7. parent::__construct($message, $ code);
  8. }
  9. // 문자열 출력 스타일 사용자 정의
  10. public function __toString() {
  11. return __CLASS__ . ": [{$this->code}]: {$this ->message}n ";
  12. }
  13. public function customFunction() {
  14. echo "이 유형의 예외에 대한 사용자 정의 함수";
  15. }
  16. }
코드 복사

예외 처리의 기본 아이디어는 try 코드에서 코드를 호출하여 실행하는 것입니다. try 코드 블록에서 오류가 발생하면 예외 처리를 수행할 수 있습니다. Java와 같은 일부 프로그래밍 언어는 특정 상황에서 자동으로 예외를 발생시킵니다. PHP에서는 예외를 수동으로 발생시켜야 합니다. 다음과 같이 예외가 발생할 수 있습니다. 새로운 예외 발생('메시지',코드); Throw 키워드는 예외 처리 메커니즘을 트리거합니다. 이는 함수가 아닌 언어 구성이지만 값이 전달되어야 합니다. 수신 객체가 필요합니다. 가장 간단한 경우에는 내장된 Exception 클래스를 인스턴스화할 수 있습니다. 마지막으로 try 코드 뒤에는 적어도 하나의 catch 코드 블록이 제공되어야 합니다. 여러 개의 catch 코드 블록을 try 코드 블록과 연결할 수 있습니다. 각 catch 블록이 다른 유형의 예외를 catch할 수 있는 경우 여러 catch 블록을 사용하는 것이 합리적입니다. 예를 들어 Exception 클래스의 예외를 포착하려는 경우입니다.

  1. Catch(예외 $e)
  2. {
  3. //예외 처리
  4. }
코드 복사

Catch 코드에 캡처된 개체는 예외를 발생시킨 개체이며 throw 문에 전달되었습니다(throw 문에 의해 발생). Exception 클래스의 인스턴스를 사용하는 것이 좋은 선택입니다. Exception 클래스는 다음과 같은 내장 메서드를 제공합니다. Getcode() - 생성자에 전달된 코드를 반환합니다. GetMessage() — 생성자에 전달된 메시지를 반환합니다. getFile() - 예외 코드를 생성한 파일의 경로를 반환합니다. getLine() - 예외를 생성한 코드 줄을 반환합니다.

참고: 예외가 포착되면 try() 블록의 후속 코드는 계속 실행되지 않지만 일치하는 "catch" 코드 블록을 찾으려고 시도합니다. 예외가 발생했을 때 catch 처리가 수행되지 않으면 "캐치되지 않은 예외 '예외'" 오류가 보고됩니다.

  1. function test($val){
  2. if ($val>100){
  3. throw new Exception( "프롬프트 메시지: 입력한 값이 너무 큽니다.");
  4. }
  5. }
  6. test(111);
  7. ?>
코드 복사

3. 예외가 발생하면 catch 문 블록의 처리 여부를 다르게 처리해야 합니다. 사용자 등록 기능을 위한 코드 일부

  1. 시도{
  2. //입력된 양식 확인
  3. if(!filled_out($_POST)){
  4. throw new Exception('아직 양식을 작성하지 않았습니다. 돌아가서 작성해 주세요.');
  5. }
  6. //이메일 주소가 유효하지 않은지 확인
  7. if(!check_email($ email)){
  8. throw new Exception('이메일 형식이 잘못되었습니다.');
  9. }
  10. //밀도의 길이가 6보다 큰지 확인
  11. if(strlen($ passwd<6)){
  12. throw new Exception(' 밀도의 길이는 6보다 커야 합니다.');
  13. }
  14. //두 비밀번호가 같은지 확인하세요 http://bbs.it -home.org
  15. if($passwd!=$passwd1){
  16. throw new Exception('두 비밀번호가 다릅니다. 다시 입력해 주세요.');
  17. }
  18. // 사용자 이름의 길이가 정확합니다
  19. if(strlen($username)>16){
  20. throw new Exception('사용자 이름의 길이가 일치하지 않습니다. 다시 입력하십시오.');
  21. }
  22. } catch(Exception $e){
  23. echo $e->getMessage() //예외 정보를 출력합니다.
  24. }
  25. ?>
코드 복사


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