그들은 매우 다른 종류의 언어이며 예외 처리 방식은 다소 다를 수 있습니다. 예외 처리는 어떻게 구현되며 이러한 언어의 구현 차이점은 무엇입니까?C++, Java 및 JavaScript 예외 처리의 차이점은 무엇입니까?
나는 C++ 예외 처리가 JavaScript 버전에 비해 매우 느린 것으로 보였기 때문에이 질문을하고 있습니다.
그들은 매우 다른 종류의 언어이며 예외 처리 방식은 다소 다를 수 있습니다. 예외 처리는 어떻게 구현되며 이러한 언어의 구현 차이점은 무엇입니까?C++, Java 및 JavaScript 예외 처리의 차이점은 무엇입니까?
나는 C++ 예외 처리가 JavaScript 버전에 비해 매우 느린 것으로 보였기 때문에이 질문을하고 있습니다.
나는 예외 처리 및 성능에 관한 발견 된 가장 상세한 대답은/구현이 페이지에 : http://lazarenko.me/tips-and-tricks/c-exception-handling-and-performance
나는 C++ 예외 처리의 단지 기본을 알고 있지만 C에서 당신이 할 수있는 ++ 동안 최대한 멀리 볼 수, 자바는 예외 Object
excplicit 기반 계층 구조 (Throwable
, Exception
, RuntimeException
, Error
)가
try
{
throw 1337;
}
catch (int i)
{
// i == 1337
}
이것은 물론 클래스 구조 및 일반적인 예외 처리 정책의 디자인에 반영됩니다.
다른 차이점은이 겉으로보기에는 사소한 차이로 인해 C++에는 실제로 런타임 예외 () int
또는 다른 기본 유형을 예외로 호출하지 않으려는 경우 명시 적으로 예외를 작성하지 않고 언제든지 아무 것도 던질 수 있음을 의미하는 자바 세계에서 값).
마지막으로 Java의 예외와 비교할 때 C++ 예외는 이 아니며 기본적으로에는 Java의 스택 트레이스와 비슷한 내용이 포함되어 있지 않습니다.
이러한 예외가 내부적으로 어떻게 생성되는지 묻는다면 꽤 복잡한 문제입니다.
하나의 접근법 (나는 C++과 Java를 사용한다고 생각하는데 자바 스크립트에 대해 모른다)은 오류 처리기 스택을 유지하는 것입니다. 예외가 발생하면 최상위 항목이 스택에서 팝 아웃되고 적절하게 예외를 처리하거나 핸들러가 처리 할 수없는 경우 상위 처리기가 OutOfBoundException 인 경우 NullPointerException을 수신하는 등 스택에서 다른 항목을 팝합니다.
이 전략 (핸들러 스택)은 들어 본 자바 구현에서 사용되지 않습니다. –
C++ - 플랫폼과 어떤 컴파일러에? – kennytm
답변을 한 후에야 깨달았습니다. Java가 스택 트레이스를 구성하고 실패 경로 또는 더 높은 수준의 답변을 얻는 것과 같은 저수준 세부 정보를 구현하면 어떻게됩니까? – Esko
어떻게 C++ 예외 처리가 JavaScript보다 느릴 수 있습니까? 어떤 브라우저에서 어떤 플랫폼에서 어떤 코드를 실행하고 어떤 컴파일러와 비교하여 어떤 플랫폼에서 어떤 코드를 컴파일합니까? – Puppy