2010-06-26 1 views
3

JVM 또는 CLR (공용 언어 런타임) 처리와 관련하여 처리량을 0으로 나누는 방법은 무엇입니까? 나누기 명령을 실행하기 전에 매번 분모를 확인합니까? 아니면 "0으로 나누기"트랩이 프로세서에서 발생했을 때 호출되는 콜백 함수를 사용하여 처리됩니까?JVM (Java) 또는 CLR (C#)에서 런타임 예외 처리 (0으로 나누기)

모든 의견을 부탁드립니다.

, 감사합니다 앨런

+1

CLR이 예외를 throw합니다. –

+1

제 질문은 예외를 던지는 과정이 무엇입니까? – Invincible

+0

미안하지만 나는 무례하기 싫어. 하지만 정확히 어떻게 "0으로 나누기"예외가 처리되는지, 그리고 그것을 수행하는 방법에 대한 의견 만이 아니라 알고 싶습니다. 각 구현에서 상반 관계가 있습니다. 1) 모든 나누기 작업에 대해 분모를 확인하면 성능이 저하 될 수 있습니다. 2) OS 트랩 루틴의 콜백 기능은 복잡한 설계 선택이지만 예외 처리는 예외입니다. 따라서 .Net 또는 Java에서 어떤 디자인 선택을 취했는지 알고 싶습니다. – Invincible

답변

6

나는 이것에 대한 하드웨어 트랩을 생성 아는 프로세서. 운영 체제에서 처리하고 OS 종속 메커니즘 (신호, 예외 등)이있는 사용자 모드 코드에 반영됩니다. 런타임이 선택하여 Java 또는 .NET 예외로 변환합니다.

1

구현 세부 사항입니다. 가상 컴퓨터의 내부에서 어떤 일이 발생하는지 상관하지 않아도됩니다 (신경 써야한다면 진정한 이식성을 잃을 것입니다).

그러나 관리 코드가 jitted되기 때문에 항상 나누기가 수행되며 분모가 0 인 경우 프로세서는 런타임에서 캐치되어 상위 예외로 반영되는 첫 번째 예외를 발생시킵니다.

+0

+1,하지만 난 두포에서 무슨 일이 일어나는지 아는 데 아무런 해가 없다고 생각합니다. –

+0

물론 아무런 해가 없습니다! 그러나 구현을 알 필요가 없을 때 이식성 문제가 발생하지 않는다는 사실을 강조하는 것이 중요합니다. – Wizard79