1、語法錯誤
num = 1 if num > 1 print("num > 1") # 系統報錯提示:SyntaxError: expected ':'
2、邏輯錯誤(編寫業務邏輯錯誤)
3、系統錯誤
二、異常
2、語法和邏輯都正常
3、程式業務邏輯不完善引起的程式漏洞(bug)
def div(a, b): return a / b print(div(1, 0)) # 程式會報錯:ZeroDivisionError: division by zero 考慮不全面
三、錯誤與異常的區別
1、異常可以被捕獲和處理
四、常見的異常型別
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)