피드로 돌아가기
Dev.toBackend
원문 읽기
Kotlin Multiplatform의 JS 플랫폼 zero division 예외 누락 해결
⚠️ The Kotlin Multiplatform division-by-zero trap
AI 요약
Context
Kotlin Multiplatform 환경에서 정수 나눗셈 시 플랫폼별로 서로 다른 동작 방식 발생. JVM과 Native는 ArithmeticException을 발생시키나, JS 플랫폼은 런타임 예외 없이 0을 반환하는 일관성 결여 문제 존재.
Technical Solution
- ECMAScript의 ToInt32 변환 로직에 따른 Infinity | 0 및 NaN | 0의 0 처리 메커니즘 분석
- 플랫폼 기본 연산자에 의존하지 않는 Kotools Types의 Integer 추상화 계층 도입
- 연산 위임 전 제로 디바이저(Zero Divisor)를 명시적으로 검증하는 Pre-condition 체크 로직 구현
- JVM, JS, Native 전 플랫폼에서 동일한 ArithmeticException을 보장하는 일관된 예외 처리 구조 설계
- 예외 기반 흐름 제어의 오버헤드 제거를 위한 divOrNull 및 remOrNull의 Optional 반환 패턴 제공
실천 포인트
- KMP 프로젝트 내 정수 나눗셈 및 나머지 연산 포함 여부 전수 조사 - JS 타겟 포함 시 try-catch(ArithmeticException) 구문의 무효화 가능성 검토 - 플랫폼 독립적인 수치 연산 보장을 위한 Kotools Types Integer 도입 고려 - 런타임 예외보다 안전한 null 반환형 API(divOrNull) 우선 적용 검토