我們目前正在開發一個內部使用的框架。我們現在處於想要使用標準化異常ID和消息的地步。開發人員只需提供一個ID和一條默認消息,框架將查找相關消息(如果可能)或使用默認消息(如果消息無法檢索)。 第一個想法是編寫一個異常工廠,它強制開發人員提供錯誤ID,然後在工廠方法中查找消息。這種方法的問題是,在棧跟蹤中添加了一個額外的框架(創建異常的工廠方法)。那不太好。幾乎所有試圖隱藏創作的解決方案都存在這個問題。 第二個想法是將消息查找和我們的異常類耦合起來,然後編寫一個抽象異常類,它在構造函數中接收錯誤ID並處理消息查找。但那也不是很好,因爲它缺乏鬆耦合。 第三個想法是讓開發人員每次都寫郵件的查找..也不錯..如何在Java中編寫異常工廠
你有什麼想法嗎?
P.S.我認爲是我第一次需要在Java中宏..
了不同的方法代碼:
1.
throw createException(new ErrorId("123"), TechnicalException.class, "defaultmsg"); //uses reflection, also not very nice but works
或
throw createTechnicalException(new ErrorId("123", "defaultmsg"); //write a method for every type of exception
2.
public TechnicalException(ErrorId errorId, String defaultmsg) {
super(defaultmsg);
//get msg here and set on a new field cause detailMessage is not accessible. Also overwrite toString();
}
throw new TechnicalException(new ErrorId("123"), "defaultmsg");
3.
ErrorId errorId = new ErrorId("123");
String msg = someProvider.getMessage(errorId);
throw new TechnicalException(errorId, msg);
如何創建**錯誤消息**工廠而不是**異常**工廠? –