推 Killercat:catch exception的時候用qualified name 08/01 15:11
哇哇~感謝大大!!
原來要這樣qualified name取用才會catch到,學到了~感恩<(_ _)>
→ popcorny:看到暈了.. @@ 08/01 15:31
推 PsMonkey:我覺得炸點在於... 你為什麼會覺得這是同一個 Kerker.... 08/01 15:31
後來才驚覺不是同一個>"<
→ swpoker:為何kerkerException是放在interface裡面阿??? 08/01 15:34
原本是想找最上層放, 就丟在那了
※ 編輯: NullLife 來自: 115.82.254.32 (08/01 15:40)
→ swpoker:那就不一樣了喔~當然你可以從名子去分~但是不同的class喔 08/01 15:52
嗯嗯,問題解決了~感謝各位<(_ _)>
※ 編輯: NullLife 來自: 115.82.254.32 (08/01 16:05)
對不起,我又有新的問題...
那這樣我catch的時候,變成ToolClass要寫一段catch, WorkClass也要寫一段catch
可是我兩段要做的事情是一樣的耶,有辦法寫在一起處理嗎?
※ 編輯: NullLife 來自: 115.82.254.32 (08/01 16:18)
→ swpoker:你可以把兩段的CODE放上來聞香一下嗎 08/01 16:25
嗯,大致上是這樣...
try {
process(); // 裡面有可能會有ToolClass丟出來的KerkerException
// 也有可能是WorkClass run到一半丟出來的KerkerException
} catch (WorkClass.KerkerException wke) {
wke.printStackTrace();
} catch (ToolClass.KerkerException tke) {
tke.printStackTrace();
}
我剛試了一下,因為WorkClass跟ToolClass的KerkerException不是同一個
所以我要這樣才不會漏掉其中一個,而掉到Exception裡
而他們的動作其實都一樣,所以我原本想找他們兩個有相同extend或implements的東西
寫在那邊一次解決了,很可惜沒有...
※ 編輯: NullLife 來自: 115.82.254.32 (08/01 16:38)
→ swpoker:catch (IOException|SQLException ex) (7) 08/01 17:06
→ swpoker:那要用橋接嗎?不然就是整理一下方法就可以了啦 XD 08/01 17:08
感謝,不過我剛要橋接時發現好像JRE1.7才支援這個寫法...?
但我剛發現一個寫法, 但我不確定是否會影響其他繼承的class
我在tool繼承支線裡發現一段很乾淨(目前是什麼都沒有XD)的interface繼承
原本打算寫在那邊, 然後work再去implements它
但想了想不太對, 既然一開始設定兩邊繼承支線就拆開了,
到後面我還把它綁在一起, 萬一後續tool那邊有要新實做什麼東西
是work那邊不需要做的事情, 好像有點麻煩...
於是我在那個interface裡又塞了一段interface,變成↓
public interface ToolClass_C extends ToolClass_Fathers {
interface OwnException {
@SuppressWarnings("serial")
public class KerkerException extends RuntimeException {
/**
* 自定錯誤訊息
* @param message message
*/
public KerkerException(String message) {
super(message);
}
}
}
}
然後work跟tool再去implements ToolClass_C.OwnException
這樣就變成會是同一個KerkerException
但我不曉得這樣寫, 對後續會不會照成影響?
因為不只有我負責的程式會去繼承這些東西,
所以我現在沒有很確定這樣寫到底OK不OK...?
※ 編輯: NullLife 來自: 115.82.254.32 (08/01 17:58)
→ Killercat:er..不是一定得掛qualified name, 是要看你import 08/01 18:19