In che modo rb_raise di Ruby interrompe l'esecuzione della funzione c che lo chiama?

StackOverflow https://stackoverflow.com/questions/2535568

  •  22-09-2019
  •  | 
  •  

Domanda

Se scrivi un metodo ruby ​​come funzione in C che utilizza rb_raise, la parte della funzione successiva alla chiamata non verrà eseguita e il programma si fermerà e tu penserai che rb_raise usato exit().Ma se salvi l'eccezione in Ruby, come:

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

Il codice Ruby continuerà, ma la tua funzione smetterà di essere eseguita.Come fa rb_raise farlo accadere?

È stato utile?

Soluzione

Presumibilmente usa setjmp (prima che il metodo venga chiamato) e longjmp (In rb_raise).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top