2

Python 3.8.12 removed the fpectl module. This module enabled catching floating point errors as standard Python exceptions.

I have a Python programme which uses a module which, in turns, calls a closed-source C library. The C library sometimes causes a floating point error. In this case, the Python interpreter is killed by the OS and the result is that the programme ends abruptly without leaving a stack trace or without any possibility of recovery.

Because the computations performed by this external C library are optional for my programme, I would like to recover from the floating point error and continue, e.g., by catching an exception. Before, this was possible with the fpectl module:

from external_library import buggy_function
import fpectl

fpectl.turnon_sigfpe()

try:
    buggy_function()
except FloatingPointError:
    print('buggy_function aborted: continuing without it')

fpectl.turnoff_sigfpe()

How can I achieve the same result now that fpectl is not available any longer?

Alberto Santini
  • 6,425
  • 1
  • 26
  • 37

0 Answers0