# -*- coding:utf-8 -*- import logging from functools import reduce try: print('try...') r = 10 / int('0') print('results:', r) except ValueError as e: # 檢查類型是否正確 print('ValueError:', e) except ZeroDivisionError as e: # 檢查分母是否爲0 print('except:', e) else: print('no error!') finally: print('finally...') print('END') def foo(s): return 10 / int(s) def bar(s): return foo(s) * 2 def maintest(): try: bar('0') except Exception as e: logging.exception(e) # 使用logging報錯之後後續程序將會繼續執行 maintest() print('Ending') class FooError(ValueError): pass def doo(d): n = int(d) if n == 0: raise ValueError('Invalid value: %s' % d) # raise第二種拋出錯誤方法 return 10 / n def mar(): try: doo('0') except ValueError as e: print('ValueError!') raise # 獲得錯誤信息後,raise如果不帶參數,就會把當前錯誤原樣拋出給上層 # mar() def str2num(s): try: return int(s) except ValueError: try: return float(s) except Exception as e: return 0 def calc(exp): ss = exp.split('+') ns = map(str2num, ss) return reduce(lambda acc, x: acc + x, ns) def mains(): r = calc('100 + 200 + 345') print('100 + 200 + 345 =', r) r = calc('99 + 88 + 7.6') print('99 + 88 + 7.6 =', r) mains()
Python 錯誤處理
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.