-
Notifications
You must be signed in to change notification settings - Fork 20
/
Copy pathPart4_Errors_and_Exceptions.py
123 lines (103 loc) · 4.03 KB
/
Part4_Errors_and_Exceptions.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
######################################
# #Errors and Exception Handling
######################################
#
# In this lecture we will learn about Errors and Exception Handling in Python.
# You've definitely already encountered errors by this point in the course.
# For example:
print('Hello
# Note how we get a SyntaxError, with the further description that it was an EOL
# (End of Line Error) while scanning the string literal. This is specific enough
# for us to see that we forgot a single quote at the end of the line. Understanding
# these various error types will help you debug your code much faster.
#
# This type of error and description is known as an Exception. Even if a statement
# or expression is syntactically correct, it may cause an error when an attempt is
# made to execute it. Errors detected during execution are called exceptions and
# are not unconditionally fatal.
#
# You can check out the full list of built-in exceptions
# [here](https://docs.python.org/2/library/exceptions.html).
# now lets learn how to handle errors and exceptions in our own code.
###################
# try and except
###################
# The basic terminology and syntax used to handle errors in Python is the try
# and except statements. The code which can cause an exception to occue is put
# in the try block and the handling of the exception is the implemented in the
# except block of code. The syntax form is:
#
# try:
# You do your operations here...
# ...
# except ExceptionI:
# If there is ExceptionI, then execute this block.
# except ExceptionII:
# If there is ExceptionII, then execute this block.
# ...
# else:
# If there is no exception then execute this block.
#
# We can also just check for any exception with just using except: To get a
# better understanding of all this lets check out an example: We will look at
# some code that opens and writes a file:
try:
f = open('testfile','w')
f.write('Test write this')
except IOError:
# This will only check for an IOError exception and then execute this print statement
print("Error: Could not find file or read data")
else:
print("Content written successfully")
f.close()
# Now lets see what would happen if we did not have write permission (opening only with 'r'):
try:
f = open('testfile','r')
f.write('Test write this')
except IOError:
# This will only check for an IOError exception and then execute this print statement
print("Error: Could not find file or read data")
else:
print("Content written successfully")
f.close()
# Great! Notice how we only printed a statement! The code still ran and we were
# able to continue doing actions and running code blocks. This is extremely
# useful when you have to account for possible input errors in your code.
# You can be prepared for the error and keep running code, instead of your code
# just breaking as we saw above.
#
# We could have also just said except: if we weren't sure what exception would occur.
# For example:
try:
f = open('testfile','r')
f.write('Test write this')
except:
# This will check for any exception and then execute this print statement
print("Error: Could not find file or read data")
else:
print("Content written successfully")
f.close()
# Great! Now we don't actually need to memorize that list of exception types!
# Now what if we kept wanting to run code after the exception occurred? This is
# where **finally** comes in.
###################
# finally
###################
# The finally: block of code will always be run regardless if there was an
# exception in the try code block. The syntax is:
#
# try:
# Code block here
# ...
# Due to any exception, this code may be skipped!
# finally:
# This code block would always be executed.
#
# For example:
try:
f = open("testfile", "w")
f.write("Test write statement")
finally:
print("Always execute finally code blocks")
# **Great! Now you know how to handle errors and exceptions in Python with the
# try, except, else, and finally notation!**