2011-02-05 4 views
5

, Clojure의 (1.2)을 잡기되지는 잘못된 메시지를 인쇄합니다.Clojure에 다음과 같은 코드에서 NumberFormatException이

내가 뭘 잘못하고 있니?

게으른 시퀀스가 ​​map에 의해 반환 되었기 때문에 이것이 발생 했습니까? 그것을 어떻게 써야합니까?

+2

도움이 될만한 정보를 찾을 수 있습니다. http://groups.google.com/group/clojure/msg/f4ea5a9c38f4d991 – MayDaniel

답변

10

try 특수 서식은 본문 코드의 동적 범위에서 발생하는 예외 만 캐치합니다. 여기에서 map은 지연 시퀀스를 반환하며,이 시퀀스는 try 특수 형식에서 전달되어 반환됩니다. 그런 다음 프린터가 시퀀스를 평가하고 그 시점에서 예외가 발생합니다.

doallmap을 입력하면 문제가 해결됩니다.

+1

나는 실제로 그것을 시도했습니다. 그것은 여전히 ​​RuntimeException에 싸여 NFE를 반환하는 것 같습니다. – Ralph

+1

@ 랄프 : 1.3 이하에서 작동합니다. parseInt 호출을 try로 래핑하고 예외가 발생하면 적절한 값을 반환 할 수 있습니다. 이것이 적절하지 않은 경우 예외가 발생하면 nil을 반환하고 결과 시퀀스에 nil이 있는지 확인하여 예외가 발생했는지 판단한 다음 적절하게 작동하는지 확인할 수 있습니다. – Brian

+0

두 번째 제안 ('nil'을 반환)은 합리적으로 들립니다. 나는 그것을 체크 할 것이다. – Ralph