2010-07-29 4 views
3

나는 예외 작업을하려고합니다.초보자 : 새로운 예외를 던지십시오 - 예외 이름을 바꿀 수 있습니까?

나쁜 일이 발생하는 경우 :

나중에
throw new CreateContactException($codigo, $result->msg); 

, 나는 시도하고 경우 확인하지, 캐치 :

try 
{ 
    createContact(); 
} 
catch(CreateContactException $e) 
{ 
    $error .= 'An error occurred with the code:'.$e->getCode().' and message:'.$e->getMessage(); 
} 

그래서 내가 좋아하는 뭔가를 1) 이 방법이 유용할까요? 내 말은,이 getCode() 및 getMessage()는 CreateContactException 인수와 관련이 없다는 것인가?

2) 어딘가에 예외를 확장하는 CreateContactException 클래스가 있어야합니까? 확장 클래스를 만들 필요없이 예외에 대한 맞춤 이름을 사용할 수 있습니까? 사전에

고마워, MEM

답변

12
단지의 서브 클래스해야

예외 내장 Exception 클래스,이 같은 새로운 만들 수 있도록 :

class CreateContactException extends Exception {} 

다른 던져 시도를 클래스를 예외로 설정하면 오류가 발생합니다.

try { 
    // do something 
} 
catch (CreateContactException $e) { 
    // handle this 
} 
catch (DomainException $e) { 
    // handle this 
} 
+0

확인 :

다른 이름을 사용하는 장점은 여러 catch 블록을 가질 수 있습니다, 그래서 당신은 예외의 다른 종류를 잡아 다른 사람을 통해 미끄러 할 수 있다는 것입니다. 그래서 이것이 제일 먼저 할 일이 될 것입니다. 예외를 확장하는 클래스를 만듭니다. 비어있는 경우 대신 예외를 사용하지 않는 이유는 무엇입니까? – MEM

+0

클래스를 생성했다고 가정 할 때 getCode 및 getMessage와 throw 인수를 어떻게 관련시킬 수 있습니까? 나는 조금 잃어 버렸어. 나는 깨달았다. ... 감사합니다. MEM – MEM

+1

왜 예외적 인 대신에 사용 하시겠습니까? 특정 예외 유형을 던지고 잡을 수 있기를 원하기 때문입니다. Exception을 확장하므로 Exception에있는 모든 메서드를 상속하므로 getCode 및 getMessage가 작동합니다. – Mchl

관련 문제