2012-07-20 3 views
0

내 코드에 일부 클래스가 있습니다. 이러한 클래스에서 객체를 시작합니다. 예를 들어PHP 변수를 할당 할 때 예외를 잡는 방법

$c = new category ($myGoodObject->categoryId); 

myGoodObject의 범주 객체를 제공해야합니다. 그러나 예를 들어 1000이라는 categoryId가 데이터베이스에 정의되어 있지 않으면 클래스는 예외를 throw합니다.

어떻게 잡을까요? 그리고 때로는 존재하지 않을 수도있는 데이터베이스에서 개체를 시작 /로드하는 가장 좋은 방법은 무엇입니까? 실패를 피하는 방법?

감사합니다.

편집 :

나는이 시도 :

try { 
$c = new category (1000); 
} catch (Exception $e) {return false;} 

하지만 그것은 작동하지 않았다.

+0

편집과 관련하여 "작동하지 않았다"는 의미는 무엇입니까? 충돌 했나요? 오류가 발생 했습니까? 개체를 만들지 않으시겠습니까? – peacemaker

+0

여전히 Uncaught 예외 만 제공합니다. –

답변

1
try 
{ 
    $c = new category ($myGoodObject->categoryId); 
} 
catch (Exception $e) 
{ 
    echo 'Caught exception: ', $e->getMessage(), "\n"; 
} 

모범 사례에 관해서는, 먼저 값이 존재하는 경우, 당신은 개체를 만들려고 때문에 예외에 대한 필요성을 피하지 않을 경우 확인하기 위해 데이터베이스를 읽으려고합니다. 이 예외를 캐치하지 않는 예외

+0

감사합니다. 'category' 클래스가 예외를 throw 할 때 작동합니까? –

+0

예, 예외를 throw하는'try' 블록 내의 모든 것이 관련된'catch' 블록에 잡힐 것입니다. – peacemaker

0

, 단지 그것을 사용하기 전에이 있는지 확인합니다. ..

if(isset($myGoodObject->categoryId)){ 
    $c = new category ($myGoodObject->categoryId); 
    //... 
} 
-1

에 대한 자세한 내용에서는 try..catch 블록

try { 
    //try assigning 
catch (Exception $e) { 
    //do something 
} 

here를 사용하여 발생하는 경우

+0

예외가 발생하면 왜 그것을 처리하지 않겠습니까? –

+0

나는 $ myGoodObject의 categoryId가 정의되지 않았는지 질문하는 것이 문제라고 오해했다. – hackattack

+0

:) 솔직히 말해서 그 질문이 모두 확실하지는 않습니다. –

관련 문제