예를 들어 다음과 같이 XQuery 쿼리 내에서 오류가 발생하면
error( fn:QName( 'http://example.com', 'XMPL0001' ), 'Conflict' )
... 다음은 BaseX에서 반환됩니다 (서버와 통신 할 때 또는 GUI 내에서).
Stopped at ., 1/7:
[XMPL0001] Conflict
어떻게 든 오류의 네임 스페이스 (이 경우 http://example.com
) 를 검색 할 수 있습니까?
사용자 지정 PHP 클라이언트를 사용하고 있으며이 정보를 사용하여 사용자 지정 오류 코드와의 가능한 (미래) 충돌을 방지하고 오류를 구문 분석하여 오류 의 네임 스페이스에 따라 표준 BaseX\Exception
또는 사용자 지정 을 던지고 싶습니다 SomeNamespace\Exception
.
물론 일반적인 ABCD1234
XQuery 패턴이 아닌 다른 오류 코드 패턴을 사용 하여 가능한 (미래) 오류 코드 충돌을 방지 할 수 있지만 네임 스페이스의 가능한 사용이 더 매력적입니다. 그런 다음 동일한 Exception
인터페이스 를 정의 할 수 있기 때문입니다. 같이:
interface ExceptionInterface
{
public function getCategory(); // the 4 alpha character part
public function getCode(); // the 4 digit part
}
그런데 저는 현재 BaseX 7.7.2를 사용하고 있습니다.
예, 다음 과 같이 try-catch 문의 범위 에있는 error 네임 스페이스의 몇 가지 변수를 사용하여 오류에 대한 정보를 검색 할 수 있습니다 .
declare namespace err = "http://www.w3.org/2005/xqt-errors";
try {
error( fn:QName( 'http://example.com', 'XMPL0001' ), 'Conflict' )
}
catch * {
namespace-uri-from-QName($err:code)
}
이것은 XQuery 3.0을 사용하고 있다고 가정합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다