PHP 이상 처리 분석
Exception {
/* */
protected string $message ; //
protected int $code ; //
protected string $file ; //
protected int $line ; //
/* */
public __construct ([ string $message = "" [, int $code = 0 [, Exception $previous = null]]] )
final public string getMessage ( void ) //
final public Exception getPrevious ( void ) //
final public int getCode ( void ) // ,
final public string getFile ( void ) //
final public int getLine ( void ) //
final public array getTrace ( void ) // (array)
final public string getTraceAsString ( void ) // (string)
public string __toString ( void ) //
final private void __clone ( void ) //
}
ErrorException extends Exception {
/* */
protected int $severity ;
/* */
public __construct ([ string $message = "" [, int $code = 0 [, int $severity = 1 [, string $filename = __FILE__ [, int $lineno = __LINE__ [, Exception $previous = NULL ]]]]]] )
final public int getSeverity ( void )
/* */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
그렇다면 이상 은 어떻게 잡 습 니까?(1)PHP 는 try..catch..이상 을 포착 할 수 있 습 니 다.이상 처 리 를 하 는 코드 는 try 코드 블록 에 있어 야 합 니 다.
try {
throw new Exception('exception test 1', 1001);
} catch(Exception $e) {
echo $e->getMessage().'-'.$e->getCode();
}
(2)사용 자 는 이상 처리 함 수 를 사용자 정의 할 수 있 습 니 다[setexception_handler],try/catch 로 캡 처 하지 않 은 이상 에 사용 합 니 다.
function exception_handler ( $e ) {
echo "Uncaught exception: " , $e -> getMessage (), "
" ;
}
set_exception_handler ( 'exception_handler' );
throw new Exception ( 'Uncaught Exception' );
echo " ";
서 를 사용 하 는 것 을 볼 수 있 습 니 다.exception_handler 반전 함수 처리 이상,후속 코드 는 계속 실행 되 지 않 지만 try-catch 는 가능 합 니 다.(3)PHP 는 여러 catch 로 서로 다른 유형의 이상 을 포착 할 수 있 으 며,catch 코드 블록 에서 이상 을 다시 던 질 수 있 습 니 다.
//
class MyException extends Exception {
public function __construct($message = '', $code = 0) {
}
public function myFunction() {
echo 'just for test';
}
}
try {
throw new MyException('an error');
} catch (MyException $e) {
echo $e->myFunction();
} catch (Exception $e) {
echo $e->getMessage();
}
(4)PHP 5.5 는 finally 키 워드 를 지원 합 니 다.이상 이 넘 쳤 는 지 신경 쓸 필요 가 없습니다.다음 과 같이 비교 할 수 있 습 니 다.
function doSomething() {
$resource = createResource();
try {
$result = useResource($resource);
} catch (Exception $e) {
releaseResource($resource);
log($e->getMessage());
exit();
}
releaseResource($resource);
return $result;
}
// finally
function doSomething2() {
$resource = createResource();
try {
$result = useResource($resource);
return $result;
} catch (Exception $e) {
log($e->getMessage());
exit();
} finally {
releaseResource($resource);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.