直播軟體原始碼,異常偶有發生我們該如何處理?

云豹科技-苏凌霄發表於2024-03-16

直播軟體原始碼,異常偶有發生我們該如何處理?

初識異常

異常與異常處理:

  • 異常既錯誤
  • 異常會導致程式崩潰並停止執行
  • 異常處理可以捕獲到異常,將異常部位的程式進行處理使得直播軟體原始碼繼續正常執行

異常處理的結構由 try-except 程式碼塊組成

try:
    程式碼塊 #被try關鍵字檢查並保護的程式碼
except <異常型別> # try關鍵字檢查的程式碼可能出現的異常的種類
    程式碼塊 # try關鍵字檢查的程式碼出現異常後執行的程式碼

def upper(str_data):
    new_str = str_data.upper()
    return new_str

res = upper('hero')
print(res)

在這裡插入圖片描述
呼叫 upper 函式時,傳入字串,函式可以正常執行,如果傳入數字則會報錯

res_01 = upper(111)
print(res_01)

res_02 = upper('hello')
print(res_02)

在這裡插入圖片描述
錯誤程式碼後面的程式碼無論正確與否一旦出現異常,程式就會終止,這個時候就需要對這段可能會出錯的程式碼進行異常處理,確保直播軟體原始碼能正常執行。

def upper(str_data):
    new_str = ''
    try:
        new_str = str_data.upper()
    except:
        print('程式執行出現問題')
    return new_str

在這裡插入圖片描述
對函式中可能出現異常的程式碼進行了異常處理,程式可以正常執行。

捕獲異常

可以對try-except程式碼中的異常進行捕獲,再不確定是那種異常的情況下可以使用異常的基類Exception進行捕獲

def divid(x, y):
    res = 0
    try:
        res = x / y
    except Exception as e:
        print(e)
    return res



res = divid(1, 2)
print(res)

res_01 = divid(1, 0)
print(res_01)

res_02 = divid(10, 2)
print(res_02)

在這裡插入圖片描述
不使用try-except異常處理,執行函式,檢視控制檯列印出的具體異常

def divid(x, y):
    res = x / y
    return res

在這裡插入圖片描述
可以看出控制塔列印的異常為 “ZeroDivisionError: division by zero”,如果可以確定具體的異常型別,也可以在except關鍵字後捕獲具體的異常

def divid(x, y):
    res = 0
    try:
        res = x / y
    except ZeroDivisionError as e:
        print(e)
    return res

在對列表和字串進行索引操作時還會出現索引超出範圍異常,使用這個異常看能否不會divid函式中的異常

def divid(x, y):
    res = 0
    try:
        res = x / y
    except IndexError as e:
        print(e)
    return res

在這裡插入圖片描述
直播軟體原始碼執行還是出錯,這是因為異常型別不匹配,所以沒有捕獲到,在進行異常處理時如果可以確定具體的異常型別就使用具體的異常型別,如果不確定就是用基類異常,使用的異常不匹配程式仍然不能正確執行

捕獲多個異常

可以透過連續新增except程式碼塊的方式捕獲多個異常。

try:
    # 程式碼塊
except Eexception1 as e1:
    # 程式碼塊
except EXception2 as e2:
    # 程式碼塊
except EXception3 as e3:
    # 程式碼塊

當 except 程式碼塊有多個的時候,當異常型別匹配後,就不會繼續往下捕獲,也可以使用元組將所有待捕獲的異常存起來。

try:
    # 程式碼塊
except (Eexception1, Exception2, Exception3) as e:
    # 程式碼塊

def divid(x, y):
    res = 0
    try:
        res = x / y
    except (IndexError, NameError, ZeroDivisionError) as e:
        print(e)
    return res

或者

def divid(x, y):
    res = 0
    try:
        res = x / y
    except IndexError as e:
        print(e)
    except NameError as e2:
        print(e2)
    except ZeroDivisionError as e3:
        print(e3)
    return res

以上就是直播軟體原始碼,異常偶有發生我們該如何處理?, 更多內容歡迎關注之後的文章

相關文章