Liboctave error handler does not return, correct?

Just checking my memory, the error handler in liboctave (*current_liboctave_error_handler) throws an exception and does not return to the function where it is called, is that right?

That’s the way the error() function in libinterp behaves, but I’m re-coding gsvd.cc in liboctave and I need to know what happens.

Looking at other place where that function is used, it looks like it throws an exception and doesn’t return.
That is also how I coded using it in the past. (I hope that was right.)

Cool, and we are both right. The liboctave error handler does throw an exception. I modified some code to explicitly call the handler and I verified that the code beyond it does not run. Now back to re-working gsvd.cc.

Right it would be big trouble if it did return.

The whole pointer-to-handler function to allow a library user to redefine the behavior of errors and warnings might have made sense 25+ years ago, but in these modern times, we should probably simply throw exceptions for errors. I’m not sure what we can do for warnings that is better.