我有一個靜態初始化塊。它將日誌記錄設置爲文件。如果出現問題,我只是想擺脫靜態塊。這可能嗎?我知道我可以使用if/else方法,但使用簡單的中斷會使代碼更具可讀性。Java中的靜態初始化塊的打破
2
A
回答
3
你可能想捕獲所有異常:
static {
try {
// Initialization
}
catch (Exception exception) {
// Not much can be done here
}
}
但要注意:在加載該類不會失敗,但全部或部分靜態字段可能是不一致的狀態。
0
try/catch怎麼樣?
try{}catch(){}
1
這是你在找什麼?
label:
{
// blah blah
break label;
}
0
- 如果它是一個例外,使用嘗試{拋出新的異常();}趕上
,如果它是正常處理,可使用如果 - 則 - 否則或開關
最終你可以使用標籤,但恕我直言這是一個非常不好的風格://boolean condition; static { label: { System.out.println("1"); if(condition) break label; System.out.println("2"); } }
+0
請不要使用HTML代碼標籤。只需縮進你的代碼(在列表中4個空格或8個),代碼將很好地顯示出來。 –
4
你的靜態塊可以調用的方法
static { init(); }
private static void init() {
// do something
if(test) return;
// do something
}
0
在我看來,一個靜態塊未在流量控制戰略而言使用任何其他塊不同。如果你發現它更具可讀性,你可以在任何地方使用BREAK(也可以在你的靜態塊中),但是一般的假設是它使得代碼的可讀性更差,而IFELSE方法更好。
相關問題
- 1. 初始化靜態塊中的線程?
- 2. 靜態初始化的Java序列化
- 3. 靜塊VS靜態成員初始化
- 4. Kotlin的靜態初始化程序塊
- 5. 靜態塊VS中的靜態變量初始化順序
- 6. java繼承的靜態初始化
- 7. Java中的靜態初始化程序和靜態方法
- 8. 靜態塊vs靜態方法 - 初始化靜態域
- 9. 靜態初始化
- 10. 靜態HashMap的初始化
- 11. Spring的靜態初始化
- 12. 靜態初始化塊跳過
- 13. 使用靜態初始化塊與Mockito
- 14. Java靜態初始化塊上的奇怪代碼
- 15. 爲什麼我會在java中使用靜態初始化塊?
- 16. Java - 靜態初始化與靜態變量的默認值
- 17. 靜態類在Java初始化
- 18. java球衣靜態字段初始化
- 19. Java - 靜態類及其父初始化
- 20. Java靜態初始化命令
- 21. 靜態成員java初始化順序
- 22. Java靜態字段初始化
- 23. Java初始化塊
- 24. JAVA初始化塊
- 25. Java中靜態初始化和動態初始化有什麼區別?
- 26. android studio中的OpenCV靜態初始化
- 27. Python中的靜態初始化器
- 28. asm中的靜態初始化程序
- 29. Objective C中的靜態初始化C
- 30. 靜態初始化程序中的Task.Run
這會讓您的課程處於不一致/無法使用的狀態嗎? –
是的,會的。這是一個日誌記錄類。因此,如果失敗,它仍然可以將日誌輸出寫入控制檯,但日誌記錄將不可用。 – user489041
我得到的是,如果您的課程處於不可用狀態,它可能無法通過類加載器(或沿着這些線)加載,導致各種問題。只要記住,* all *'static final'變量應該被初始化,無論... –