Python基础-16.异常处理
一、Pythony异常处理
在平时过程中会出现很多异常比如:
ZeroDivisionError: division by zero
NameError: name 'spam' is not defined
TypeError: can only concatenate str (not "int") to str
我们可以通过一些处理来避免异常出现程序崩溃的现象
1.try…except语句
try…except语句可以处理异常使得系统继续
语法:
try:
执行代码
except 错误类型:
该类错误类型执行的代码
except:
发生其他异常执行的代码
实例1:让用户输入一个合法的整数,如果不是整数提示错误并继续,可以中断
while True:
try:
x = int(input("请输入一个数字: "))
break
except ValueError:
print("您输入的不是数字,请再次尝试输入!!!")
# 1.首先,执行 try 下面的代码
# 2.如果没有异常发生,忽略 except 后面的操作,try 后面的执行完成则结束
# 3.如果在执行 try 子句的过程中发生了异常,那么 try 下面的代码余下的部分将被忽略。如果异常的类型和 except 之后的名称相符,那么对应的 except 部分将被执行。
# 4.如果一个异常没有与任何的 except 匹配,那么这个异常将会传递给上层的 try 中。
2.try…except…else语句
语法:
try:
执行代码
except 错误类型:
该类错误类型执行的代码
except:
发生其他异常执行的代码
else:
没有发生错误时执行的代码
实例1:定义一个字符串判断是不是整数
a, b = 12, 13
try:
c = a + b
except:
print('field!!!')
else:
print(c)
3.try…finally语句
语法:
try:
执行代码
except 错误类型:
该类错误类型执行的代码
except:
发生其他异常执行的代码
else:
没有发生错误时执行的代码
finally:
无论如何都要执行的代码
实例1:下载一个文件处理错误异常
import requests
new_file = 'mytest.exe'
try:
response = requests.get('https://download/test.exe')
except requests.exceptions.ConnectionError as e:
print(f'Connection Error: {e}')
except requests.exceptions.Timeout as e:
print(f'Timeout Error: {e}')
else:
with open(new_file, 'wb') as f:
f.write(response.content)
f.close()
print(f'Downloaded file https://download/test.exe saved to {new_file}...')
finally:
print('Process ended!!!')