Open In App

Python | Reraise the Last Exception and Issue Warning

Improve
Improve
Like Article
Like
Save
Share
Report

Problem – Reraising the exception, that has been caught in the except block.

Code #1: Using raise statement all by itself.




def example():
    try:
        int('N/A')
    except ValueError:
        print("Didn't work")
        raise
          
example()


Output :

Didn't work
Traceback (most recent call last):
    File "", line 1, in 
    File "", line 3, in example
ValueError: invalid literal for int() with base 10: 'N/A'

This problem typically arises when there is no need to take any action in response to an exception (e.g., logging, cleanup, etc.). A very common use might be in catch-all exception handlers.

Code #2 : Catching all exception handlers.




try:
 ...
except Exception as e:
    # Process exception information in some way
    ...
    # Propagate the exception
    raise


 
Problem 2 – To have a program issue warning messages (e.g., about deprecated features or usage problems).

Code #3: Using the warnings.warn() function




import warnings
def func(x, y, logfile = None, debug = False):
    if logfile is not None:
        warnings.warn('logfile argument deprecated',
                                DeprecationWarning)


The arguments to warn() are a warning message along with a warning class, which is typically one of the following:
UserWarning, DeprecationWarning, SyntaxWarning, RuntimeWarning, ResourceWarning, or FutureWarning.
The handling of warnings depends on how the interpreter is executed and other configuration.

Output when running Python with the -W all option.

bash % python3 -W all example.py
example.py:5: DeprecationWarning: logfile argument is deprecated
  warnings.warn('logfile argument is deprecated', DeprecationWarning)

Normally, warnings just produce output messages on standard error. To turn warnings into exceptions, use the -W error option.

bash % python3 -W error example.py
Traceback (most recent call last):
    File "example.py", line 10, in 
        func(2, 3, logfile ='log.txt')
    File "example.py", line 5, in func
        warnings.warn('logfile argument is deprecated', DeprecationWarning)
DeprecationWarning: logfile argument is deprecated
bash %


Last Updated : 12 Jun, 2019
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads