Imatest IT 4.2 버전부터 API 사용자가 오류를 처리하는 더 나은 방법을 제공하기 위해 예외 계층 구조가 구현되었습니다. 이 페이지는 Imatest 에서 발생할 수 있는 예외와 Imatest IT/DLL 에서 해당 예외를 처리하는 방법에 대한 참조 자료입니다.
예외 계층 구조
아래는 Imatest에 대해 정의된 예외 계층 구조입니다. 이 표에서 들여쓰기 가 클수록 해당 예외가 들여쓰기가 더 작은 바로 위의 예외를 상속함을 나타냅니다. Imatest IT 라이브러리는 기본 MATLAB 루틴에서 발생하는 예외도 발생시킬 수 있습니다. Imatest IT는 Imatest 예외와 MATLAB 예외를 구분하는 데 필요한 함수를 제공합니다.
저희 라이브러리에서 발생하는 모든 예외는 std::exception을 상속받는 MATLAB 클래스인 mwException 클래스의 인스턴스입니다.
예외 이름 | 메모 |
|---|---|
ImatestException | Imatest의 모든 예외에 대한 기본 클래스입니다. |
구성 예외 | Imatest의 잘못된 구성과 관련된 오류 처리를 위한 예외입니다. 예를 들어, 제공된 INI 파일에 잘못된 항목이 있는 경우입니다. |
데이터 예외 | 이는 Imatest 데이터 객체에 문제가 발생했을 때 발생하는 예외입니다. |
데이터 생성자 예외 | 이는 Imatest 데이터 객체의 생성자에 문제가 있을 경우 발생하는 예외입니다. |
이미지분석예외 | 사용자가 제공한 이미지의 출처로 인해 발생하는 오류에 대해서는 예외가 적용됩니다. |
자동 예외 감지 | 자동 감지 알고리즘과 관련된 오류에 대한 예외 사항입니다. |
크롭 예외 | 이미지 자르기가 잘못되어 발생하는 일반적인 오류에 대해서는 예외가 적용됩니다. |
DetectionException | 이 예외는 Imatest의 특징점 검출 알고리즘 내에서 발생하는 오류에 대한 것입니다. |
RoiFailureException | ROI에 문제가 있는 경우, 예를 들어 감지된 에지가 ROI의 양쪽 끝에 너무 가까운 경우와 같은 오류에 대해서는 예외가 적용됩니다. |
| ImageSourceException | 사용자가 제공한 이미지의 출처로 인해 발생하는 오류에 대해서는 예외가 적용됩니다. |
BadFramingException | 단, 이미지 속 테스트 차트가 카메라와 제대로 정렬되지 않았거나, 즉 구도가 맞지 않은 경우는 예외입니다. |
이미지획득예외 | 이미지 획득 인터페이스(예: Android 또는 Omnivision API 함수)로 인해 발생하는 오류에 대한 예외입니다. |
이미지 예외 | 이미지 파일에서만 발생하는 오류(비디오 파일에서는 발생하지 않는 오류)에 대해서는 예외가 적용됩니다. |
BadImageSizeException | 이미지 크기가 너무 작아 분석에 사용할 수 없는 경우는 예외입니다. |
EmptyImageException | 분석에 사용할 수 있는 이미지 배열이 있어야 했지만 빈 이미지 배열이 감지된 경우 예외가 적용됩니다. |
지원되지 않는 형식 예외 | 지원되지 않는 이미지 또는 비디오 형식이 제공되는 경우 예외가 적용됩니다. |
비디오 예외 | 동영상 파일과 관련된 일반적인 오류에 대해서는 예외가 적용됩니다. |
ImatestIOException | 입출력 관련 일반적인 문제에 대한 예외 사항입니다. |
ImatestCannotOpenFileException | Imatest가 파일을 열 수 없는 경우, 즉 파일을 찾을 수 없는 경우 이외의 다른 이유로 읽기 또는 쓰기 권한을 얻을 수 없는 경우에 대한 예외입니다. |
ImatestFileNotFoundException | 지정된 파일을 찾을 수 없는 경우에 대한 예외입니다. |
ImatestSocketException | 소켓 통신 중 오류가 발생했을 때 나타나는 예외입니다. |
| 라이선스 예외 | 타사 라이선스 라이브러리 또는 시스템에 대한 외부 호출과 관련된 오류(예: Nalpeiron 라이브러리 호출 시 오류 코드가 반환되는 경우)는 예외입니다. |
| 출력 예외 | 그래프 또는 텍스트 기반 출력 오류와 같이 사용자에게 제공되는 출력과 관련된 오류는 예외로 합니다. |
JSONException | JSON 파일 읽기 또는 쓰기 오류에 대한 예외입니다. |
플로팅 예외 | Imatest가 사용자에게 출력하는 그래프의 오류에 대한 예외입니다. |
XmlException | XML 파일 읽기 또는 쓰기 오류에 대한 예외입니다. |
파라미터 예외 | 함수 매개변수와 관련된 오류에 대해서는 예외를 적용합니다. |
IncorrectNumInputs 예외 | 함수에 잘못된 개수의 입력값이 제공되었을 때의 예외입니다. |
| IncorrectNumOutputsException | 함수에 잘못된 출력 개수가 제공된 경우의 예외입니다. |
| 입력 형식 예외 | 입력 매개변수의 형식이 잘못된 경우(길이 오류 등)에는 예외가 적용됩니다. |
| 잘못된 입력 유형 예외 | 입력 매개변수의 유형이나 클래스가 잘못된 경우 발생하는 오류에 대해서는 예외가 적용됩니다. |
UIException | 사용자 인터페이스와 관련된 일반적인 오류에 대해서는 예외가 적용됩니다. |
사용자취소 예외 | 사용자가 취소 버튼을 눌렀을 때 발생할 수 있는 예외입니다. |
함수 프로토타입 및 기타 라이브러리 리소스
mwException 클래스에는 예외를 나타내는 멤버가 없으므로, Imatest IT 라이브러리에는 마지막으로 발생한 예외의 식별자를 가져오는 함수가 포함되어 있습니다. getExceptionID () 함수는 catch 블록 내에서 호출하도록 설계되었습니다(아래 예 참조).
| getExceptionID (int nargout , mwArray& errID, mwArray& errName ) | 마지막 예외에 대한 식별자와 이름을 검색하는 호출입니다. |
errID 매개변수는 MATLAB 배열 클래스인 mwArray이며, 예외를 식별하는 부호 있는 정수를 포함합니다. errName 에는 예외 이름이 포함된 문자열이 있습니다. 입력 인수 nargout은 2여야 합니다.
Imatest IT 라이브러리에는 Imatest 예외 계층 구조에 대한 식별자를 정의하는 열거형 및 상수 char* 선언이 포함된 추가 헤더 파일( imatest_exception_IDs.h )이 있습니다. imatest_exception_IDs.h 에 정의된 값은 getExceptionID() 에서 반환되는 값에 해당합니다.
예시: 예외 유형을 판별하는 방법
Imatest 예외와 Matlab 예외를 구분하려면 getExceptionID 함수를 사용하여 예외 식별자를 가져와야 합니다. Imatest 예외에 대한 전체 식별자 목록은 Imatest IT 에 포함된 imatest_exception_IDs.h 헤더 파일에 정의되어 있습니다. 예외 식별자를 가져오는 예는 아래와 같습니다.
try {
// call an Imatest library function ...
} catch(mwException& mwe) {
std::cout << "Error!" << std::endl;
std::cout << mwe.what() << std::endl;
mwe.print_stack_trace(); // print the stack trace to std::cerr
mwArray errName, errID;
getExceptionID(2, errID, errName);
std::string exceptName((const char*)errName.ToString());
int exceptID = errID.Get(1,1);
// Handle exceptions using definitions in imatest_exception_IDs.h...
} catch(const std::exception& ex) {
// Handle exceptions ...
}관련 INI 파일 설정
Imatest INI 파일의 [api] 섹션에 continue_on_error INI 키가 추가되었습니다. continue_on_error 는 Imatest IT 에서 이미지를 일괄 처리할 때 발생할 수 있는 Imatest 예외를 억제하는 데 사용할 수 있습니다. continue_on_error를 1로 설정하면 예외가 억제되고, 0으로 설정하면 예외가 발생할 수 있습니다. 자세한 내용은 다음 문서를 참조하십시오. Imatest IT에 영향을 미치는 매개변수 .