python錯誤與異常

九幽帝君發表於2022-01-18

一、錯誤

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)

 

相關文章