2010-03-29 4 views
5

rb_raise을 사용하는 C에서 함수로 루비 메서드를 작성하면 호출 후 함수의 일부가 실행되지 않고 프로그램이 중지되고 rb_raiseexit()으로 간주됩니다. 이 같은 루비의 예외 구출한다면 :ruby의 rb_raise가이를 호출하는 c 함수의 실행을 어떻게 멈 춥니 까?

begin 
    method_that_raises_an_exception 
rescue 
end 
puts 'You wil still get here.' 

를 루비 코드에 갈 것입니다,하지만 기능은 excecuting 중지됩니다. rb_raise가 어떻게됩니까?

답변

5

setjmp (메서드 호출 전) 및 longjmp (rb_raise)을 사용하는 것으로 가정합니다.