簡體   English   中英

我可以一次捕獲多個try語句嗎? 在java中

[英]Can i catch multiple try statements with one catch? in java

我正在做一個帶有3D陣列的項目,我需要測試一個單元周圍的每個單元。 但是,如果單元格位於陣列的邊緣,則在陣列外部測試單元格將引發超出范圍的異常。 我想用catch語句解決此問題,但是編寫一次try and catch以測試每個塊將需要大量代碼(3D數組中的一個單元周圍有8個單元)。 有沒有一種方法可以只捕獲一個就可以捕獲許多“嘗試”,然后繼續從中斷的地方繼續呢? 例如,如果測試器方法測試了一個超出范圍的單元格,那么我不僅需要捕捉它,還需要繼續測試其他單元格。

我只能猜測:您的代碼可能有很多不同的循環,但是每個循環的核心都很相似。 只需在每個循環中使用相同的方法:

for ... x ...
  do(x);

for ... x ...
  do(x);

for ... x ...
  do(x);

// ...

void do(... x)
{
   try
   {
      // code here
   }
   catch ...
   // ...
}

另外,請注意,您不應通過捕獲異常來實施in-bounds檢查。 那是非常糟糕的設計。 確保您的陣列訪問始終是入站的。 如果循環條件本身無法達到該目標(例如,由於您的數組不是統一的網格),請進一步添加if語句。

另一種解決方案是在需要測試的單元周圍放置一層保護單元。 僅測試實際單元的鄰居,但邊緣單元將看到保護單元,而不會出現越界異常。

或者,您可以放置​​一條if語句,檢查您是否仍在邊界內,如果是,則訪問該單元格,否則不訪問。

我相信您將需要一個循環來測試另一個單元格周圍的單元格。 您可以做的是,在循環內編寫一條try ... catch語句,並在其后給出繼續

for (/*loop conditions*/) {
    try
    {
        //your code here
    }
    catch (/*catch the IndexOutOfBoundsException here*/)
    {//write any action or message you need to have here}
    continue;
}

這樣,您的循環將完全運行,而不管拋出任何IndexOutOfBounds異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM