9.6. Try-Except Statements¶
Try-except statements are another selection structure in Python. Like if
, elif
and else
statements, a try-except statements select a particular block of code to run based on a condition. Unlike if
, elif
and else
clauses, try-except blocks are not based on logical conditions. Try-except blocks are based upon whether a line or section of code returns an error.
Therefore, before we learn how to use try-except statements, we need to understand two types of errors in Python: syntax errors and exception errors.
9.6.1. Syntax Errors¶
A syntax error is a type of error in Python that occur when the syntax in a line of code is not valid Python code. Syntax errors include quotes that are not closed and variable names that do not start with a letter.
The line of code below contains a syntax error. The string "problem solving
is missing a quotation mark "
.
string = "problem solving
File "/tmp/ipykernel_944545/142759820.py", line 1
string = "problem solving
^
SyntaxError: EOL while scanning string literal
When you encounter syntax errors in Python, the Python interpreter displays SyntaxError
and often a cryptic message.
Even if a line of code does not run when a program is executed, syntax errors in Python are not allowed. For instance, a line of code indented after the if-statement if 'a' == 'b':
will not be executed. But if the indented line of code contains a syntax error, the Python interpreter still flags the error as a syntax error and does not complete the program.
if 'a' == 'b':
string = 10problems
File "/tmp/ipykernel_944545/101656791.py", line 2
string = 10problems
^
SyntaxError: invalid syntax
9.6.1.1. Exception Errors¶
Syntax errors are lines of code that are not valid Python. Another type of error in Python is an exception error. Exception errors result when a valid line of Python code cannot run. Lines of code with exception errors contain valid Python code, but the line of code still cannot be executed.
For example, the statement f = open('file.txt','r')
is valid Python code. But if the file file.txt does not exist, Python throws an exception error because f = open('file.txt','r')
cannot be executed.
f = open('file.txt','r')
---------------------------------------------------------------------------
FileNotFoundError Traceback (most recent call last)
/tmp/ipykernel_944545/1541342814.py in <module>
----> 1 f = open('file.txt','r')
FileNotFoundError: [Errno 2] No such file or directory: 'file.txt'
Another valid line of Python code is print(a[0])
, but if a
is defined as an integer, a
can not be indexed and an exception error is shown.
a = 1
print(a[5])
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/tmp/ipykernel_944545/535893585.py in <module>
1 a = 1
----> 2 print(a[5])
TypeError: 'int' object is not subscriptable
Try except statements can be used to try to run sections of Python code that may return an exception error. The general syntax of a try except statement is below:
try:
<code to try>
except:
<code to run instead>
For instance, if the file file.txt does not exist, a line of code that tries to open file.txt can be included in a try
statement.
try:
f=open('file.txt','r')
except:
print('file does not exist')
file does not exist
Similarly, we can wrap the code a = 5
and print(a[0])
in a try block and attempt to run it. If the line a = 5
and print(a[0])
throws an exception error, the code below except
runs.
try:
a = 5
print(a[0])
except:
print('variable a is not a list')
variable a is not a list
When the Python code in a try block does run and does not throw an exception error, the code in the except
block does not run.
try:
a = 'Solution'
print(a[0])
except:
print('variable a is not a list')
S