目录
一、错误
- 定义:在运行之前就发生或存在的,导致程序无法运行,同时也是程序本身不能处理的。
- 分类:语法错误,语义错误。(语法代码逻辑错误,或不合法的输入错误)
- 举例
print(123) 1 ? 2
(虽然第一句没有错误,但是因为第二句有语法错误,所以导致第一句无法运行)
二、异常
- 定义:指在运行环境正常的情况下遇到的运行时错误,且程序在遇到异常处终止(前提是异常没有被处理),可以被处理。(运行过程中)
- 异常是非致命的,但也会导致程序的非正常终止。
- 举例
print(123) text print(text)
(虽然后面两句异常,但是第一句还是会运行)
三、如何处理异常
- 第一种语法:try:
正常执行的语句
except :
处理异常的语句
try:
1 / 0
except:
print("分母不能为0")
- 第二种语法:exception是所有异常的父异常,意味着他可以接受所有的异常。
try: 就相当于 try:
except: except exception:
- 如果给了固定的异常类型,那么就只能接收这一种异常类型。
try: 1 / 0 except ZeroDivisionError: print("分母不能为0")
try: 1 + "" except ZeroDivisionError: print("分母不能为0")
- 第三种语法:可以写多个except
try: 1 + "" except ZeroDivisionError: print("分母不能为0") except TypeError: print("类型错误")
(结果)
try:
要执行的语句
except ExceptionType1:
.........
except ExceptionType2:
.........
.........
except ExceptionTypeN:
.........
- 第四种语法: finally无论有没有遇到异常,都要执行。
try:
要执行的语句
except ExceptionType1:
.........
except ExceptionType2:
.........
finally:
最后要做的事情
num = 0
try:
print("打开数据库")
1 / num
except ZeroDivisionError:
print("分母不能为零")
finally:
print("关闭数据库")
num = 1
try:
print("打开数据库")
1 / num
except ZeroDivisionError:
print("分母不能为零")
finally:
print("关闭数据库")
- 第五种语法:else是如果没有异常的时候,执行else中的语句。
try:
要执行的语句
except ExceptionType1:
.........
.........
except ExceptionTypeN:
.........
else:
没有遇到异常要执行的语句
finally:
最后要执行的语句
num = 0
try:
print("打开数据库")
1 / num
except ZeroDivisionError:
print("分母不能为零")
else:
print("normal")
finally:
print("关闭数据库")
num = 2
try:
print("打开数据库")
1 / num
except ZeroDivisionError:
print("分母不能为零")
else:
print("normal")
finally:
print("关闭数据库")
- 重命名:as-->as newname