【有书共读】python带我起飞读书笔记07
7.1 错误的分类
7.1.1 语法错误
print 'hello' #在Python3中,这种写法是不允许的,'hello'外面必须有括号
7.1.2 运行时错误
a=1/0 #ZeroDivesionError :division by zero
7.2 异常的基本语法
7.2.1 异常的定义
异常处理的语法定义如下:
try:
<语句> #运行别的代码
except <名字>:
<语句> #如果在 try 部分引发看 'name' 异常
except <名字>, <数据>:
<语句> #如果引发了 'name' 异常,获得附加的数据
else:
<语句> #如果没有异常,则执行该分支语句
7.2.2 输出未知异常
try:
-----some function -----
except Exception as e:
print (e)
7.2.3 输出异常的详细信息
1. sys 的exc_info 函数
模块 sys 中有两个函数可以返回异常信息的全部信息:一个是exc_info;另一个是last_traceback。
例:
如 HTTP 请求失败,实现 “重试” 功能
def retry(attempt): def decorator(func): def wrapper(*args, **kw): att = 0 while att < attempt: print(att) try: return func(*args, **kw) except Exception as e: att += 1 return wrapper return decorator import requests #网络请求模块 @retry(attempt=3) #重试次数 def get_response(url): r = requests.get(url) return r URL = 'http://www.163.com' r = get_response(URL) print(r) print(r.content.decode('gbk')) URL2 = 'http://www.1632334434.com' r = get_response(URL2) print(r)