Stackless Scala Play Framework 런타임 오류

Matanster

이 귀여운 오류가 발생했습니다.이 오류는 플레이의 로그 파일 (또는 콘솔에서도)과 관련된 스택 추적이 없습니다.

[ERROR] [03/14/2015 19:36:46.713] [play-akka.actor.default-dispatcher-7] [ActorSystem(play)] Uncaught error from thread [play-akka.actor.default-dispatcher-7] (scala.runtime.NonLocalReturnControl)
[error] a.a.ActorSystemImpl - Uncaught error from thread [play-akka.actor.default-dispatcher-7]
scala.runtime.NonLocalReturnControl: null

이것이 충돌 한 약속 / 미래를 나타내지 만 akka의 디스패처 외에 더 이상 스레드가 더 이상 기다리고 있지 않습니까? 그럼에도 불구하고 디버거 세션을 연결하지 않고 코드에서 오류를 추적하려면 어떻게해야합니까?

디버거를 연결하면 return내부 Future map구성 을 사용 하면 NonLocalReturnControl오류가 발생한 것 같습니다 . 이상하게도 안타깝게도이 경우 스택 추적은 콘솔 / 로그에 전파되지 않습니다. NonLocalReturnControl이 생성 된 순간의 스택은 디버거에서 볼 수 있지만, akka / play는 어떻게 든 제공하지 않습니다.

Matanster

아아, 이러한 유형의 오류 스택 추적은 기본적으로 억제됩니다. 스칼라가이 예외 유형을 내부적으로 던지고 잡아서 함수 반환 값 전파를 내부적으로 구현한다는 것이 놀랍게도 (최소한 Scala 2.11까지). 그러므로 특별한 억제는 ... 운이 좋지 않습니다.

return미래에 사용할 때도 같은 예외가 발생합니다 . 이는 분명히 실수이지만 내부 아키텍처에서이 억제 된 예외를 사용하면이 특정 경우를 디버깅하게됩니다. return이 오류가 발생하면 비동기 코드에서 사용하지 않는지 확인 하고 return가능한 한 많이 사용하지 않도록하여 비동기로 전환 될 때 코드에서 팝업이 표시되지 않도록하십시오.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사