1. 程式人生 > 實用技巧 >面向物件-08-自定義異常

面向物件-08-自定義異常

'''
1.自己寫幾個繼承Exception的異常類,在自己寫的類中,定義當異常出現時要執行的程式碼.
(Exception為所有異常的基類,因為Exception會幫你實現捕獲異常的功能)
eg:
import os
class ExistsError(Exception):
pass
class keyInvalidError(Exception):
pass
def func(path,prev):
"""

要求該方法實現:去path路徑的檔案中,找到字首為prev的一行資料,獲取資料並返回給呼叫者
1000,成功
1001,檔案不存在
1002,關鍵字為空
1003,未知錯誤
"""
response = {'code':1000,'data':None}
try:
if not os.path.exists(path):
raise ExistsError('檔案不存在')

if not prev:
raise KeyInvalidError('關鍵字為空')
# except是來捕獲異常的,程式碼執行時是先執行try中的主程式碼,當主程式碼丟擲異常時,按異常的編寫順序依次匹配.也即先看是不是ExistsError
異常,若是則程式碼終止,不再繼續執行接下來的異常,若不是則再匹配keyInvalidError異常,接下來的步奏同ExistsError一樣.
except ExistsError as e:

response['code'] = 1001
response['data'] = '檔案不存在'
except keyInvalidError as e:
response['code'] = 1002
response['data'] = '關鍵字為空'
except Exception as e:
response['code'] = 1003
response['data'] = '未知錯誤'

2.把主體程式碼放在try中,把異常程式碼單獨拿出來.這種程式碼格式是為了方便別看你程式碼,因為我們一般看別人的程式碼看的都是try中的.如果你把異常處理也放在try中
會顯得你的主體程式碼非常臃腫.

'''