2
我想扔應用程序錯誤創建程序。這個程序應該放在單獨的程序包中。甲骨文 - 「記錄」不斷
procedue Raise_Error(error_code) is
err t_Error;
begin
err:= error_list(error_code);
raise_application_error(err.error_number, err.message);
end;
所以我創建了包內的類型:
我怎麼能這樣創建錯誤常量的列表:
const1 t_Error := t_Error (-200001, 'first message');
const2 t_Error := t_Error (-200002, 'second message');
error_list ('code1') := const1;
error_list ('code2') := const2;
非常感謝。 鮑勃
完整堆棧跟蹤保持相同,只是在上SQLFIddle你的例子檢查輸出:'ORA-20002:第二消息[...跳過...]在第2行:開始error_pkg.raise_error( '代碼2');結束;'。即錯誤的來源很容易確定。從我的觀點來看,在整個項目中維護一致的錯誤列表是很好的方法,但是使用常量來定義錯誤代碼是有爭議的。 – ThinkJet
@ThinkJet - 是的,我主要是擔心這是從一個異常處理函數中調用,但並沒有解釋得非常好;無論如何也沒有真正的理由去想。 –
@Alex_Poole好的。我分享你的擔憂,尤其是因爲就在昨天,我面臨着一個程序員攔截系統錯誤並將其作爲業務級錯誤呈現的情況。這種誤解導致沒有任何關於錯誤來源的信息。因此,這種模式的使用必須有詳細的記錄,並且它的使用必須在開發團隊的所有成員中執行。 – ThinkJet