I always prefer compile-time errors and warnings over exceptions and assertions.