In Python, how does one catch warnings as if they were exceptions? In Python, how does one catch warnings as if they were exceptions? python python

In Python, how does one catch warnings as if they were exceptions?


To handle warnings as errors simply use this:

import warningswarnings.filterwarnings("error")

After this you will be able to catch warnings same as errors, e.g. this will work:

try:    some_heavy_calculations()except RuntimeWarning:    import ipdb; ipdb.set_trace()

P.S. Added this answer because the best answer in comments contains misspelling: filterwarnigns instead of filterwarnings.


To quote from the python handbook (27.6.4. Testing Warnings):

import warningsdef fxn():    warnings.warn("deprecated", DeprecationWarning)with warnings.catch_warnings(record=True) as w:    # Cause all warnings to always be triggered.    warnings.simplefilter("always")    # Trigger a warning.    fxn()    # Verify some things    assert len(w) == 1    assert issubclass(w[-1].category, DeprecationWarning)    assert "deprecated" in str(w[-1].message)


If you just want your script to fail on warnings you can invoke python with the -W argument:

python -W error foobar.py