피드로 돌아가기
Dev.toBackend
원문 읽기
CrabPascal v2.12.0: Delphi 호환 Structured Exception Handling 구현
Exceptions in CrabPascal: try/except/finally (v2.12.0) | Exceções no CrabPascal: try/except/finally (v2.12.0)
AI 요약
Context
기존 CrabPascal 인터프리터의 런타임 에러 발생 시 무음 크래시 현상으로 인한 디버깅 한계 발생. Delphi 언어의 세맨틱을 계승하여 예외 처리 경로를 정수 코드로 수동 관리하던 레거시 방식의 개발 생산성 저하 해결 필요.
Technical Solution
- try/except/finally 구문을 통한 Structured Exception Handling 체계 구축
- Heap-allocated 객체 기반의 Typed Handler 도입으로 Message 필드를 통한 상세 에러 정보 전달
- Exception.Create를 Class Method로 처리하여 T* 생성자 의존성을 제거한 유연한 객체 생성 구조 설계
- Handler Stack과 별개로 동작하는 Finally 추적 로직을 구현하여 리소스 누수 방지 및 Deterministic Cleanup 보장
- 인자 없는 raise 문을 통한 Exception Propagation 기능을 구현하여 Layered Library의 로깅 및 재투척 구조 지원
- Rust 기반의 런타임 구현과 C Codegen 분리를 통한 단계적 네이티브 바이너리 확장 전략 채택
실천 포인트
1. 언어 런타임 설계 시 Exception Handler Stack과 Resource Cleanup(finally) 경로를 분리하여 설계했는지 검토
2. 라이브러리 계층 구조에서 에러 정보를 유지하며 상위 계층으로 전달하는 Re-raise 메커니즘 구현 여부 확인
3. 인터프리터 모드와 네이티브 컴파일 모드 간의 에러 핸들링 일관성을 위한 단계적 Roadmap 수립
태그