1、语法错误及异常 exception
语法错误 例如:
number = 100
def func():
global number #添加报错解决
number += 1 #报红色波浪线
2、异常: 程序运行的时候报出来的:xxxError
例如:除数不能为0异常
def devide(a, b):
return a / b
devide(1, 0) #ZeroDivisionError: division by zero 除数为0
3、异常处理的格式
try:
可能出现异常的代码
except:
如果有异常执行的代码
else:
没有出现异常执行的代码
[finally:
无论是否存在异常,都会被执行的代码]
分为4中情况:
情况1:
try:
有可能会产生多种异常
except 异常类型1:
print(...)
except 异常类型2:
print(...)
except Exception: Exception需要放到最后一位
print(...)
如果是多个Except,异常类型的顺序需要注意,最大的Exception放到最下方
情况2:
try:
有可能会产生多种异常
except Exception as err:
print(err) --->err的内容是错误的原因
情况3:
try:
pass
except Exception as err:
print(err)
else: --->没有异常才会执行的代码块
print(...)
情况4:
文件操作 stream = open(filename, mode) stream.read() stream.close()
数据库操作 close()
无论是否有错误,都释放资源
try:
pass
except:
pass
finally: --->无论是否报出异常,均会执行
pass
有finally在,执行完finally中代码后才return
例子:
def cus_devision():
try:
n1 = int(input("第一个数字:"))
n2 = int(input("第二个数字:"))
#加法
result = n1 / n2
print("{} / {} = {}".format(n1, n2, result))
list1 = []
list1.pop() --->pop from empty list --->从空列表中删除内容
except Exception as err:
print(err)
cus_devision()
def read_stream():
stream = None
try:
stream = open(r'D:\JY\test5\aaaa.txt', 'r')
container = stream.read()
print(container)
except Exception as err:
print(err)
finally:
print("---finally---")
if stream:
stream.close()
read_stream()
4、异常抛出 raise
例:注册 用户名必须6位
def register():
username = input("请输入用户名:")
if len(username) < 6:
#抛出异常
raise Exception('用户名必须大于6位')
else:
print("用户名为:", username)
try:
register()
except Exception as err:
print(err)
print("注册失败!")
else:
print("注册成功!")