光谷 网站建设公司,深圳专业商城网站设计,网站建设论文二稿,飞凡网官网首页异常#xff1a;由于代码的逻辑或者语法错误导致的程序中断。
在学习Python的过程当中#xff0c;大家一定要区分清楚异常和布尔值False
布尔值的False只是一个值#xff0c;通常代表的是一个条件的不成立#xff0c;常用于逻辑判断
比如#xff1a;
1 num 2
2 print(num…异常由于代码的逻辑或者语法错误导致的程序中断。
在学习Python的过程当中大家一定要区分清楚异常和布尔值False
布尔值的False只是一个值通常代表的是一个条件的不成立常用于逻辑判断
比如
1 num 2
2 print(num 3)3 if num 3:4 print(num 3)
异常指的是由于代码的逻辑或者语法错误导致的程序中断
比如
1 num 2
2 22
了解了上面的逻辑之后我们来看看大家在代码当中经常出现的几种错误和常见原因
错误类型
错误名称
错误解释
SyntaxError
语法错误
是语法导致的错误通常的报错是 invalid syntax比如缩进语句块不加冒号遇到这种错误就要详细的检查自己的的语句了
IndexError
索引错误
是索引引用导致的错误通常的报错是 list out of range,遇到这个错误就要认真的检查自己是不是取了一个超出序列长度的索引
NameError
命名错误
是变量命名导致的错误通常的报错是 no model named ... 遇到这个错误就要查看自己的变量了初学者要注意是不是字符串没有加引号
AttributeError
属性错误
是调用对象属性时候导致的错误通常报错是 ... object has no attribute ... 遇到这个错误就要查看自己的对象是不是调用了不存在的属性了
KeyError
键错误
是字典取值时候导致的错误字典没有这个键
TypeError
类型错误
是对对象进行非本类型操作时候导致的没有固定的报错常见的有 ... not callabel 遇到这种错误要认真梳理自己对对象的操作了比如非函数对象加括号调用
当然异常的类型还有好多在这就不一一列举了我们来看捕获异常的关键字
捕获异常最简单的写法如下
try: #尝试执行缩进下面的报错
11
except: #如果发生错误打印Error
print(Error) Error
这里我们尝试执行 1“1”,如果可以执行就执行如果发生错误就执行下面的代码。
但是在工作当中这样的代码并没有太好的效果我们通过这段代码既无法实现错误内容的输出也不能实现错误的处理只是让程序不报错的执行了下去这个显然不好使。
所以我们首先要考虑的就是如何获取具体的错误内容例子如下
例1
try:11
exceptException as e:print(e) unsupported operand type(s) for : int and str
这里我们用到了两个之前没有用到过的关键词
1、Exception 所有的错误
2、as 别名
所以例1代码的含义就是尝试执行 11”,如果只成功就可以否则无论发生任何错误都把这个错误返回的内容起别名为e在下面输出出来。在这里要注意的一点就是e可以被打印但是不是字符串对象所以不可以进行任何字符串操作。
try:11
exceptException as e:print(type(e))
例2
try:11
exceptTypeError as e:print(e) unsupported operand type(s) for : int and str
这里和上面的例1唯一的不同就在于except后面跟了具体的错误类型意思很明确当发生TypeError的时候我进行如下处理至于其他错误就让他报错去吧。
当然这样的说法有点随性认真的查看着多种错误类型的捕获异常给我们对同一语句进行不同的异常处理带来了很大的遍历性毕竟不是所有的错误都可以pass!
了解了上面的报错那么接下来要认真研究的就是捕获异常的另外两个关键字else 和finally
首先是他两的逻辑
else代表在try执行成功之后进行执行放在except的后面
finally代表最后无论执行try成功还是失败都会执行。作为最后的收尾
了解之后我们来查看我们例子
例1
1 try:2 11
3 exceptException as e:4 print(e)5 else:6 print(it is ok)7 finally:8 print(ok its over)9
10 unsupported operand type(s) for : int and str
11 ok its over
例2
1 try:2 11
3 exceptException as e:4 print(e)5 else:6 print(it is ok)7 finally:8 print(ok its over)9
10 it isok11 ok its over
在例1当中我们执行try失败所以except和finally执行在例子2当中我们执行try成功所以else和finally成功。
else和finally的出现极大的方便了我们对捕获异常和异常处理的完整流程描述不如下面的例子
1 importpymysql2 try:3 #尝试连接数据库
4 connect pymysql.connect(5 host localhost,6 user root,7 password 123,8 database outTest
9 )10 exceptException as e:11 #失败输出错误
12 print(e)13 else:14 #如果成功进行数据查询
15 cursor connect.cursor()16 cursor.execute(select * from login)17 all_data cursor.fetchall()18 print(all_data)19 finally:20 #不论如何进行结束通知
21 print(执行结束)
到这里可能好多读者觉得捕获异常到此结束其实并不是这样还可以有一个好的建议给到大家我们可以尝试使用。先看下面的两个案例
例1
try:11
exceptException as e:print(e) unsupported operand type(s) for : int and str
例2
try:11
exceptException as e:
errortraceback.format_exc()print(error)Traceback (most recent call last):
FileC:/Users/bian/Desktop/TestProject/twistedProject/twistedProject.py, line 67, in
11TypeError: unsupported operand type(s)for : int and str
例1和例2同样实现了捕获异常的功能但是例子2的返回更加的专业并且利于调试