Python try-finally without except will not generates any error. If the finally clause executes a return, break, or continue statement, the saved exception is discarded.
try {
// something
} finally {
// guaranteed to run if execution enters the try block
}
Code after finally
will be called whether the code after the try
works or not. It doesn’t care. It is called every time.
If you need something to run IF AND ONLY IF the code in the try
FAILS, then you need to use except
.
Python try-finally without except
Simple example code.
from sys import argv
try:
x = argv[1] # Set x to the first argument if one is passed
finally:
x = 'default' # If no argument is passed (throwing an exception above) set x to 'default'
print('Finally')
print(x)
Output:
Note: This is expected behavior. try:..finally:...
alone doesn’t catch exceptions. Only the except
clause of a try:...except:...
does. So try:...finally:...
is great for cleaning up resources.
Do comment if you have any doubts or suggestions on this Python exception-handling topic.
Note: IDE: PyCharm 2021.3.3 (Community Edition)
Windows 10
Python 3.10.1
All Python Examples are in Python 3, so Maybe its different from python 2 or upgraded versions.