我是靠谱客的博主 呆萌毛巾,这篇文章主要介绍Python入门学习笔记——15.异常处理,现在分享给大家,希望可以做个参考。

复制代码
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
################################################### # 1.什么是异常 ''' 什么是异常? 异常简单理解,就是非正常,没有达到预期目标。 异常是一个事件,并且这个异常事件在我们程序员的运行过程中出现,会影响我们程序正常执行。 异常分两种: 1. 语法错误导致的异常 2. 逻辑错误导致的异常 在程序无法正常运行处理时,就会出现一个异常,在python中异常是一个对象,表示一个错误。 例如:获取一个不存在的索引 Traceback (most recent call last): File "/Users/yc/Desktop/code/1.异常处理-什么是异常?.py", line 12, in <module> print(varlist[3]) IndexError: list index out of range IndexError 异常类 list index out of range 异常信息 ''' # varlist = [1,2,3] # print(varlist[2]) ''' 如何处理异常? 1. 如果错误发生的情况是可以预知的,那么就可以使用流程控制进行预防处理 比如: 两个数字的运算,其中一个不是数字,运算就会出错。这时可以去判断来预防 ''' n2 = 3 if isinstance(n2,int): res = 10+n2 print(res) ''' 2. 如果错误的发生条件不可预知,就可以使用 try。。。except。。 在错误发生时进行处理 语法: try: 可能发生异常错误的代码 except: 如果发生异常则进入 except 代码块进行处理 ''' # 假设读取的文件不存在,会发生错误,可以使用两种方式进行处理, # 1。可以在文件读取前先判断当前的文件是否存在 # 2。也可以使用try 。。。 except。。在错误发生时进行处理 # 注意:try。。except。。是在错误发生后进行的处理。和if有着根本性的区别。 try: with open('./user.txt','r') as fp: res = fp.read() print(res) except: print('文件不存在') print('程序的继续执行。。。') ################################################### # 2.try。。except 详细用法 # 1。使用try。。except 处理指定的异常。如果引发了非指定的异常,则无法处理 try: s1 = 'hello' int(s1) # 会引发 ValueError except ValueError as e: # except IndexError as e: #如果引发了非指定的异常,则无法处理 print(e) # 2。 多分支处理异常类.不同的异常会走向不同的except处理 s1 = 'hello' try: # int(s1) # ValueError s1[5] # IndexError except IndexError as e: print('IndexError',e) except KeyError as e: print('KeyError',e) except ValueError as e: print('ValueError',e) # 3。通用异常类 Exception s1 = 'world' try: int(s1) except Exception as e: print('Exception ===',e) # 4. 多分支异常类+通用异常类.这样引发异常后会按照从上往下的顺序去执行对应的异常处理类。 s1 = 'hello' try: # int(s1) # ValueError s1[5] # IndexError except IndexError as e: print('IndexError',e) except KeyError as e: print('KeyError',e) except ValueError as e: print('ValueError',e) except Exception as e: print('Exception',e) # 5。 try...except...else... s1 = 'hello' try: str(s1) except IndexError as e: print('IndexError',e) except ValueError as e: print('ValueError',e) except Exception as e: print('Exception',e) else: print('try代码块中没有引发异常时,执行') # 6。try...except..else..finally # finally 无论是否引发异常,都会执行。通常情况下用于执行一些清理工作。 s1 = 'hello' try: int(s1) print('如果前面的代码引发了异常,这个代码块将不在继续执行。。') except IndexError as e: print('IndexError',e) except ValueError as e: print('ValueError',e) except Exception as e: print('Exception',e) else: print('try代码块中没有引发异常时,执行') finally: print('无论是否引发了异常,都会执行这个代码块') print('如果上面的代码有异常并且进行了处理,那么后面的代码将继续执行') # 7。使用 raise ,主动抛出异常 try: #可以使用 raise 主动抛出异常,并设置异常信息 raise Exception('发生错误') except Exception as e: print('Exception',e) #8。 assert 断言 assert 1 == 1 # 如果后面的表达式正确,则什么也不做 assert 2 == 1 # 如果后面的表达式错误,则直接抛出 AssertionError ################################################### # 3.自定义异常处理类 ''' 在出现异常后,对异常进行处理。并且把异常信息写入日志 日志的基本格式: 日期时间 异常的级别 异常信息:引发的异常类,异常的信息,文件及行号。。 ''' import traceback import logging # int('aa') # try: # int('aa') # except: # # 通过 traceback 模块获取异常信息 # errormsg = traceback.format_exc() # print(errormsg) # 自定义异常日志处理类 class Myexception(): def __init__(self): import traceback import logging # logging的基本配置 logging.basicConfig( filename='./error.log',# 日志存储的文件及目录 format='%(asctime)s %(levelname)s n %(message)s',# 格式化存储的日志格式 datefmt='%Y-%m-%d %H:%M:%S' ) # 写入日志 logging.error(traceback.format_exc()) # 使用自定义异常处理类 try: int('bb') except: print('在此处进行异常的处理') Myexception() # 在异常处理的代码块中去调用自定义异常类 print('abcdef')

最后

以上就是呆萌毛巾最近收集整理的关于Python入门学习笔记——15.异常处理的全部内容,更多相关Python入门学习笔记——15内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部