루아에서는 메시지 인수를 사용하여 표준 error()
함수를 호출하면 제공된 오류 메시지가 출력되고 스택 추적도 인쇄됩니다. 다음 코드를 실행 :Lua : 인수없이 error()를 호출 할 때 스택 추적이 없습니까?
print("hello")
error("oops!")
print("world")
는 다음과 같은 출력을 초래할 것 :
$ lua test.lua
hello
lua: test.lua:2: oops!
stack traceback:
[C]: in function 'error'
test.lua:2: in main chunk
[C]: ?
을하지만, 인수없이 error()
를 호출하면 루아 스택 추적을 인쇄하지 않고 자동으로 죽게 할 것으로 보인다.
print("hello")
error() // no arguments provided
print("world")
이 출력 될 것입니다 :
이$ lua test2.lua
hello
문서가 처음 message
인수 생략에 대해 아무 말도하지 않습니다이 코드를 실행
오류 (메시지 [레벨 ])
마지막으로 보호 된 함수를 종료하고 메시지를로 반환합니다.오류 메시지 함수 오류가 반환되지 않습니다. 일반적으로 오류는 메시지의 시작 부분에있는 오류 위치에 대한 정보를 에 추가합니다. level 인수는 오류 위치를 가져 오는 방법을 지정합니다. 수준 1 (기본값)에서 오류 위치는 오류 함수가 호출 된 곳입니다. 수준 2는 오류를 호출 한 함수 이 호출 된 위치로 오류를 지정합니다. 등등. 0 레벨을 건네면 메시지에 오류 위치 정보가 추가되지 않습니다.
이것이 의도 된 동작인지 아닌지 궁금한가요? 심지어 메시지가 제공되지 않는 경우에도 assert()
기능이 작동하기 때문에 스택 추적을 인쇄하고 (예 : 기본 텍스트 (예 : error
)를 출력 할 수 있습니다.)
그래, 나는'메시지'는 필수이지만 여전히 그것 없이는 작동한다는 것을 알 수있다. –
@DmitryPashkevich'error'는'message' 인자를 기대하기 때문에 실제로 작동하지 않는다. 그렇지 않으면 함수 구현에 따라 달라지며 다른 오류가 발생할 수 있습니다.'error ("")' –
@DmitryPashkevich 빈 문자열을 전달하기를 원한다면, Lua는 호환되지 않는 인자를 가지고 있기 때문에 괜찮습니다.이 경우'error'는 첫 번째 인자를'nil'으로받습니다. –