J: 오류와 일시중지

J: 오류와 일시중지

J 언어의 오류(error) 발생 시 문장 실행이 일시중지(suspension)되는 동작을 설명해요. 즉시 실행·스크립트 파일 실행·사용자 정의 동사에서의 일시중지를 다뤄요.

출처: 문서

본문

오류가 발생하면 문장의 실행이 일시중지되고, 오류 메시지와 맥락 정보가 표시돼요. 네 개의 공백이 파싱이 멈춘 지점을 나타내요. 일시중지는 다음 예에서 보여주듯 즉시 실행(immediate execution), 스크립트 파일의 실행, 또는 사용자가 정의한 이름 있는 동사·부사·접속사의 실행에서 발생할 수 있어요.

즉시 실행


   2+'a'
|domain error
|   2    +'a'

스크립트 파일의 실행


   t=: '2*3',(10{a.),'2+''a''',(10{a.),'2+3'
   t                          A script
2*3
2+'a'
2+3

   t 1!:2 <'test'             Write script file

   0!:011 <'test'             Execute file, continue on error, display (011)
2*3
6

   2+'a'
   2+3
5

   0!:001 <'test'             Execute file, stop on error, display (001)
   2*3
6

   2+'a'
|domain error
|   2    +'a'
|[-2]

사용자 정의 동사


   g=: 3 : ('1+y' ;  ':' ; '2+x+y')

   3+g 'a'
|domain error: g
|   1    +y

   13!:0 (1)                  Enable suspension
   3+g 'a'
|domain error: g
|   1    +y
|g[0]

      y                       Six-space indent indicates suspension
a

      y=. 12                  Redefine local value of y

      13!:4 ''                Resume execution at the current line
16                            Result using redefined value of y

일시중지된 환경에서 문장을 실행할 수 있고, 지역 값을 접근할 수 있으며, 실행을 재개할 수 있어요. 오류는 일시중지가 활성화되어 있을 때만(구 13!:0]1로) 일시중지를 일으켜요. 일시중지가 적용 중이면 입력 프롬프트는 여섯 칸이에요.

일시중지와 디버깅 기능은 부록 A에서 설명한 대로 13!: 계열로 제어돼요. 오류의 전체 목록은 부록 D에 나와 있어요.

더 알아보기 (Learn more)

출처: J. Errors and Suspension