JVM 또는 CLR (공용 언어 런타임) 처리와 관련하여 처리량을 0으로 나누는 방법은 무엇입니까? 나누기 명령을 실행하기 전에 매번 분모를 확인합니까? 아니면 "0으로 나누기"트랩이 프로세서에서 발생했을 때 호출되는 콜백 함수를 사용하여 처리됩니까?JVM (Java) 또는 CLR (C#)에서 런타임 예외 처리 (0으로 나누기)
모든 의견을 부탁드립니다.
, 감사합니다 앨런JVM 또는 CLR (공용 언어 런타임) 처리와 관련하여 처리량을 0으로 나누는 방법은 무엇입니까? 나누기 명령을 실행하기 전에 매번 분모를 확인합니까? 아니면 "0으로 나누기"트랩이 프로세서에서 발생했을 때 호출되는 콜백 함수를 사용하여 처리됩니까?JVM (Java) 또는 CLR (C#)에서 런타임 예외 처리 (0으로 나누기)
모든 의견을 부탁드립니다.
, 감사합니다 앨런나는 이것에 대한 하드웨어 트랩을 생성 아는 프로세서. 운영 체제에서 처리하고 OS 종속 메커니즘 (신호, 예외 등)이있는 사용자 모드 코드에 반영됩니다. 런타임이 선택하여 Java 또는 .NET 예외로 변환합니다.
구현 세부 사항입니다. 가상 컴퓨터의 내부에서 어떤 일이 발생하는지 상관하지 않아도됩니다 (신경 써야한다면 진정한 이식성을 잃을 것입니다).
그러나 관리 코드가 jitted되기 때문에 항상 나누기가 수행되며 분모가 0 인 경우 프로세서는 런타임에서 캐치되어 상위 예외로 반영되는 첫 번째 예외를 발생시킵니다.
+1,하지만 난 두포에서 무슨 일이 일어나는지 아는 데 아무런 해가 없다고 생각합니다. –
물론 아무런 해가 없습니다! 그러나 구현을 알 필요가 없을 때 이식성 문제가 발생하지 않는다는 사실을 강조하는 것이 중요합니다. – Wizard79
CLR이 예외를 throw합니다. –
제 질문은 예외를 던지는 과정이 무엇입니까? – Invincible
미안하지만 나는 무례하기 싫어. 하지만 정확히 어떻게 "0으로 나누기"예외가 처리되는지, 그리고 그것을 수행하는 방법에 대한 의견 만이 아니라 알고 싶습니다. 각 구현에서 상반 관계가 있습니다. 1) 모든 나누기 작업에 대해 분모를 확인하면 성능이 저하 될 수 있습니다. 2) OS 트랩 루틴의 콜백 기능은 복잡한 설계 선택이지만 예외 처리는 예외입니다. 따라서 .Net 또는 Java에서 어떤 디자인 선택을 취했는지 알고 싶습니다. – Invincible