-
- class Exception
- {
- protected $message = '알 수 없는 예외' // 예외 메시지
- protected $code = 0; //사용자 정의 예외 코드
- protected $file; //예외가 발생한 파일 이름
- protected $line; //예외가 발생한 코드의 줄 번호
- function __construct ($message = null, $code = 0);
- final function getMessage(); // 예외 정보 반환
- final function getCode() // 예외 코드 반환
- final function getFile(); / 예외가 발생한 파일을 반환합니다. Name
- final function getLine(); // 예외가 발생한 코드 줄 번호를 반환합니다.
- final function getTrace() // backtrace() array
- final function getTraceAsString (); // 문자로 형식화됨 String getTrace() 정보
- /* 오버로드 가능한 메서드*/
- function __toString() // 출력 가능한 문자열
- }
- ?>
코드 복사
간단한 예: (예외를 통해 오류 메시지 표시)
-
- try {
- $error = 'my error!';
- throw new Exception($error)
- } catch(예외 $e) {
- echo $e->getMessage();
- }
코드 복사
2. 이 유형
-
- class MyException은 Exception을 확장합니다
- {
- // 메시지를 지정해야 하도록 생성자를 재정의합니다 속성
- public function __construct($message, $code = 0) {
- //사용자 정의 코드
- // 모든 변수가 올바르게 할당되었는지 확인
- parent::__construct($message, $ code);
- }
- // 문자열 출력 스타일 사용자 정의
- public function __toString() {
- return __CLASS__ . ": [{$this->code}]: {$this ->message}n ";
- }
- public function customFunction() {
- echo "이 유형의 예외에 대한 사용자 정의 함수";
- }
- }
코드 복사
예외 처리의 기본 아이디어는 try 코드에서 코드를 호출하여 실행하는 것입니다. try 코드 블록에서 오류가 발생하면 예외 처리를 수행할 수 있습니다. Java와 같은 일부 프로그래밍 언어는 특정 상황에서 자동으로 예외를 발생시킵니다. PHP에서는 예외를 수동으로 발생시켜야 합니다. 다음과 같이 예외가 발생할 수 있습니다.
새로운 예외 발생('메시지',코드);
Throw 키워드는 예외 처리 메커니즘을 트리거합니다. 이는 함수가 아닌 언어 구성이지만 값이 전달되어야 합니다. 수신 객체가 필요합니다. 가장 간단한 경우에는 내장된 Exception 클래스를 인스턴스화할 수 있습니다.
마지막으로 try 코드 뒤에는 적어도 하나의 catch 코드 블록이 제공되어야 합니다. 여러 개의 catch 코드 블록을 try 코드 블록과 연결할 수 있습니다. 각 catch 블록이 다른 유형의 예외를 catch할 수 있는 경우 여러 catch 블록을 사용하는 것이 합리적입니다.
예를 들어 Exception 클래스의 예외를 포착하려는 경우입니다.
Catch 코드에 캡처된 개체는 예외를 발생시킨 개체이며 throw 문에 전달되었습니다(throw 문에 의해 발생). Exception 클래스의 인스턴스를 사용하는 것이 좋은 선택입니다.
Exception 클래스는 다음과 같은 내장 메서드를 제공합니다.
Getcode() - 생성자에 전달된 코드를 반환합니다.
GetMessage() — 생성자에 전달된 메시지를 반환합니다.
getFile() - 예외 코드를 생성한 파일의 경로를 반환합니다.
getLine() - 예외를 생성한 코드 줄을 반환합니다.
참고:
예외가 포착되면 try() 블록의 후속 코드는 계속 실행되지 않지만 일치하는 "catch" 코드 블록을 찾으려고 시도합니다.
예외가 발생했을 때 catch 처리가 수행되지 않으면 "캐치되지 않은 예외 '예외'" 오류가 보고됩니다.
- function test($val){
- if ($val>100){
- throw new Exception( "프롬프트 메시지: 입력한 값이 너무 큽니다.");
- }
- }
- test(111);
- ?>
코드 복사
3. 예외가 발생하면 catch 문 블록의 처리 여부를 다르게 처리해야 합니다.
사용자 등록 기능을 위한 코드 일부
-
- 시도{
- //입력된 양식 확인
- if(!filled_out($_POST)){
- throw new Exception('아직 양식을 작성하지 않았습니다. 돌아가서 작성해 주세요.');
- }
- //이메일 주소가 유효하지 않은지 확인
- if(!check_email($ email)){
- throw new Exception('이메일 형식이 잘못되었습니다.');
- }
- //밀도의 길이가 6보다 큰지 확인
- if(strlen($ passwd<6)){
- throw new Exception(' 밀도의 길이는 6보다 커야 합니다.');
- }
- //두 비밀번호가 같은지 확인하세요 http://bbs.it -home.org
- if($passwd!=$passwd1){
- throw new Exception('두 비밀번호가 다릅니다. 다시 입력해 주세요.');
- }
- // 사용자 이름의 길이가 정확합니다
- if(strlen($username)>16){
- throw new Exception('사용자 이름의 길이가 일치하지 않습니다. 다시 입력하십시오.');
- }
- } catch(Exception $e){
- echo $e->getMessage() //예외 정보를 출력합니다.
- }
- ?>
코드 복사
|