一、錯誤
1、語法錯誤
num = 1 if num > 1 print("num > 1") # 系統報錯提示:SyntaxError: expected ':'
2、邏輯錯誤(撰寫業務邏輯錯誤)
3、系統錯誤
二、例外
1、程式執行程序中出現的未知錯誤
2、語法和邏輯都正常
3、程式業務邏輯不完善引起的程式漏洞(bug)
def div(a, b): return a / b print(div(1, 0)) # 程式會報錯:ZeroDivisionError: division by zero 考慮不全面
三、錯誤與例外的區別
1、例外可以被捕獲和處理
2、錯誤一般是編碼錯誤,邏輯錯誤,系統錯誤
四、常見的例外型別
1、例外型別:http://docs.python.org/3/library/exceptions.html#bltin-exceptions
2、常見的例外型別:
- 除零例外
def div(a, b): return a / b print(div(1, 0)) # 程式會報錯:ZeroDivisionError: division by zero 考慮不全面
- 名稱例外
num = 1 if name > 1: print("num > 1") # 系統會報錯:NameError: name 'name' is not defined
- 索引例外
list1 = [1, 2, 1] print(list1[3]) # 系統會報錯: IndexError: list index out of range
- 鍵例外
dic1 = {'name': '楊冪'}
print(dic1['age']) # 系統會報錯:KeyError: 'age'
- 值例外
num = input("請輸入:") print(int(num)) # # 輸入字串 # 系統會報錯:ValueError: invalid literal for int() with base 10: '""'
五、例外捕獲與例外處理
try: 執行代碼 except: 發送例外時執行的代碼
try: list1 = [1, 2, 1] print(list1[3]) except Exception as e: print(e)
try: 執行代碼 except: 發送例外時執行的代碼 else: 沒有例外時執行的代碼
try: list1 = [1, 2, 1] print(list1[2]) except Exception as e: print(e) else: print('沒有例外')
try: 執行代碼 except: 發送例外時執行的代碼 else: 沒有例外時執行的代碼 finally: 不管有沒有例外都會執行代碼
六、自定義例外
class MyError(Exception): def __init__(self,value): self.value = value def __str__(self): return repr(self.value)
本文來自博客園,作者:{jiuyou-emperor},轉載請注明原文鏈接:{https://www.cnblogs.com/jiuyou-emperor/}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/415223.html
標籤:Python
上一篇:通俗講解分布式鎖:場景和使用方法
