Go가 시도할 수 없는 이유
Go의 오류 처리 방식은 기존의 error 인터페이스에 기반해 유연하지만, 컴파일러가 오류 유형을 강제하지 않아 명시적 오류 처리가 사실상 강제되지 않습니다.
반면, Zig의 오류 처리는 컴파일러가 가능한 모든 오류를 추적하고 누락된 처리를 컴파일 타임에 잡아내는 정적 오류 집합을 사용해 훨씬 더 엄격하고 명확합니다.
Go가 try 키워드 도입을 거부하는 진짜 이유는 단순한 문법 추가가 아니라, 오류 타입 시스템의 근본적 재설계가 불가능하기 때문입니다. 이 재설계는 기존 방대한 Go 생태계와 호환되지 않아 실질적으로 불가능합니다.
따라서 Go의 if err != nil 패턴은 단순한 번거로움 때문이 아니라, 언어 설계의 근간에 깊게 뿌리내린 오류 처리 모델의 한계에서 기인한 것입니다.
결론적으로, Go가 try 문법을 도입하지 않는 것은 명시성에 대한 철학적 선택이 아니라, 기존 오류 타입 시스템과 생태계 호환성 문제에 따른 불가피한 결정임을 이해해야 합니다.