2017-03-14 3 views
1

저는 아주 오래된 C++ 코드를 유지하려고하는 Java 개발자입니다 (여전히 vs2010을 사용하여 컴파일해야 함).C++에서 예외를 catch하고 다시 throw

나는 물건을 테스트 할 수있는 능력이 없으면 예외적으로 이해하려고 노력하고 있기 때문에 미안하다.

저수준 함수에서 예외를 throw하고 그냥 맨 위에 잡을 수 있습니까? 아니면 모든 레벨에서 잡아서 다시 던져야합니까?

사실이 코드는 네이티브 코드 작성, 관리 코드 호출, C# 호출, 내 Java Rest 리소스 호출로 복잡합니다. 거기에 어떤 레벨이 있더라도 나는 절대적으로 잡아서 다시 던져야합니다.

미리 감사드립니다.

편집 : Jesper가 전반부에 답변 했으므로 내 기본 코드가 시스템 :: 예외를 처리 할 수 ​​있습니까?

+0

"테스트 할 수있는 기능이없는"물론 http://ideone.com/nAwbt2를 테스트 할 수 있습니다. – bolov

+4

_ "ABI/언어 경계를 넘을 때 절대적으로 잡아서 변환해야하는 레벨이 있습니다."_ 예. –

+4

예외를 던지는 데 매우주의하십시오. throw 사이트와 catch 사이트 사이의 코드가 예외 안전을 염두에두고 작성된 경우가 아니라면 (RAII 등) 프로그램 상태를 매우 쉽게 엉망으로 만들 수 있습니다. Java 에서처럼 간단하지 않습니다. – StoryTeller

답변

6

"저수준 함수에서 예외를 throw하고 그냥 상단에서 잡을 수 있습니까?"- 예.

"모든 레벨에서 잡아서 다시 던져야합니까?" - 아니.

관련 문제