over 2 years ago

相信很多新手在寫程式的時候,很少使用這碗糕吧? 今天就來靠北一下TryCatch

TryCatch重不重要? 當然重要,TMD尤其對於需要連線的程式更加重要,畢竟我們不知道何時何地會斷線,

有一個TryCatch來做應變措施是必要的,然而也不是全部東西都要包著TryCatch,

如果我們確定這段程式不會發生任何例外,那就請不要使用TryCatch來運作,因為沒必要。

然而有一些門派推論TryCatch用太多會導致效能降低,我是這樣覺得啦(抓頭+柯P上身)~

其實TryCatch對於效能的損耗沒有那麼恐怖,網路上也有很多前輩探討這一塊,更加以實驗,

都發現沒有什麼差別!想減少TryCatch得數量,不如思考如何讓他不要拋出例外,這才是最好的方法。

接下來介紹一下,TryCatch簡單的運用↓↓

  String number = "123()";
  
  try {
  
    int result = Integer.valueOf(number);
    
  } catch(Exception ex) {            
  
    System.out.println("Number 不是數字");
    
    }

假設我們有一個字串,那如果裡面有非數字的字元,他就會拋出例外,就這麼簡單。

但有沒有NumberFormatException這一串例外的紅字呢? 這句話其實就是跟我們說變數格式化失敗,

所以其實我們程式碼應該要長這樣:

  try {
  
    int result = Integer.valueOf(number);
    
  } catch(NumberFormatException ex) {            
 
    System.out.println("Number 不是數字");
    
    }

大家需要了解一件事情,Exception代表著最基本的例外,因此不管是蝦咪妖魔鬼怪跑出來Exception都會給你處理一下,

所以並不是所有東西都該使用Exception去做處理,懂不懂?

不懂膩? 簡單的就是說,假設你今天RunTime錯誤,他也是跑那行,但你Catch內寫得沒有對於RunTime做處理。

所以再看看下面這個範例應該就懂了:

  String number = "123()";
  
  //假設第二次 number = 1;

  
  try {
  
    int result = Integer.valueOf(number);
     System.out.println(result / 0); 
    
  }catch (ArithmeticException ex) {
  
     System.out.println("運算例外");
    
  }
  catch(NumberFormatException ex) {    
  
    System.out.println("Number格式化例外");
    
    }

這裡我們一開始一樣會出現格式化例外的東東,那假設我們把number變成1,

1/0,肯定有問題嘛!這時候就會跑運算例外。

P.S. Catch只會執行一個,其餘會跳過去唷!

← [Android] 使用ValueAnimator令顏色漸變轉換 [Android] 關於RecyclerView自適應高、寬(WrapContent)的方法。 →
 
comments powered by Disqus