1. 程式人生 > 其它 >在python中使用except捕獲任何型別的異常

在python中使用except捕獲任何型別的異常

1 try:
2     正常的操作
3    ......................
4 except:
5     發生異常,執行這塊程式碼
6    ......................
7 else:
8     如果沒有異常執行這塊程式碼

使用except二不帶任何的異常型別,可以捕獲程式程式碼中的所有異常資訊,這種方式捕獲的異常不區分型別,雖然官方不推薦使用,但是我覺得在傳送http請求中使用的比較廣泛,可以有效的減少程式因遇到異常而退出。

  from loguru import logger


def _handle_request_error(self, method, request_path, params):

        
if method == c.GET: request_path = request_path + utils.parse_params_to_str(params) # url url = c.API_URL + request_path timestamp = utils.get_timestamp() # sign & header if self.use_server_time: timestamp = self._get_timestamp() body
= json.dumps(params) if method == c.POST else "" sign = utils.sign(utils.pre_hash(timestamp, method, request_path, str(body)), self.API_SECRET_KEY) header = utils.get_header(self.API_KEY, sign, timestamp, self.PASSPHRASE, self.flag) # send request response = None
if method == c.GET: response = requests.get(url, headers=header) elif method == c.POST: response = requests.post(url, data=body, headers=header) return response def _request(self, method, request_path, params): sleep_times = 1 tmp_method = method tmp_request_path = request_path tmp_params = params try: if method == c.GET: request_path = request_path + utils.parse_params_to_str(params) # url url = c.API_URL + request_path timestamp = utils.get_timestamp() # sign & header if self.use_server_time: timestamp = self._get_timestamp() body = json.dumps(params) if method == c.POST else "" sign = utils.sign(utils.pre_hash(timestamp, method, request_path, str(body)), self.API_SECRET_KEY) header = utils.get_header(self.API_KEY, sign, timestamp, self.PASSPHRASE, self.flag) # send request response = None if method == c.GET: response = requests.get(url, headers=header) elif method == c.POST: response = requests.post(url, data=body, headers=header) except while not str(response.status_code).startswith('2'): time.sleep(2) response = self._handle_request_error(tmp_method, tmp_request_path, tmp_params) append_write_file(str(response)) datetime.datetime.now() append_write_file(str(datetime.datetime.now()) + " 請求的Url=" + str(url)) append_write_file(str(datetime.datetime.now()) + " 請求的body=" + str(body)) append_write_file(str(datetime.datetime.now()) + " 進入請求迴圈不斷的進行相關的請求") sleep_times = sleep_times + random.randint(0, 9) print(str(response)) return response.json() else: print("請求傳送正常")