2017-03-18 100 views
0

爲什麼在我的try塊中沒有任何處理機會時會拋出異常?關於java try-catch異常處理

當我輸入一些字符串類型的內容,將引發出了 「在線程異常 」主「

java.lang.NumberFormatException:對於輸入字符串: 」ss「 的」

import java.io.*; 

public class Strinput { 
    public static void main(String args[]) { 
     String s1 = null, s2 = null, ss, si, sf; 
     int i1, i2; 
     float f1, f2; 
     BufferedReader strin = new BufferedReader(new InputStreamReader(
       System.in)); 
     // please ignore the printing language 
     try { 
      System.out.print("輸入第一個字符串:"); 
      s1 = strin.readLine(); 
      System.out.print("輸入第二個字符串:"); 
      s2 = strin.readLine(); 
     } catch (Exception e) { 
      System.out.println(e.getMessage()); 
     } 
     i1 = Integer.parseInt(s1); 
     i2 = Integer.parseInt(s2); 
     f1 = Float.parseFloat(s1); 
     f2 = Float.parseFloat(s2); 
     ss = strAdd(s1, s2); 
     si = strAdd(i1, i2); 
     sf = strAdd(f1, f2); 
     System.out.println("輸入的二個字符串相加結果爲:" + ss); 
     System.out.println("輸入字符串轉換爲整數相加結果爲:" + si); 
     System.out.println("輸入字符串轉換爲浮點數相加結果爲:" + sf); 
    } 

    static String strAdd(String str1, String str2) { 
     return str1 + str2; 
    } 

    static String strAdd(int int1, int int2) { 
     return String.valueOf(int1 + int2); 
    } 

    static String strAdd(float flt1, float flt2) { 
     return String.valueOf(flt1 + flt2); 
    } 
} 

回答

0

拋出異常您的try/catch!

發生這種情況是因爲您無法將s1中的字符串值「ss」轉換爲數字。

真正的答案:專注於閱讀這些異常消息:他們確切地告訴你問題在哪裏以及是什麼引起的。這一切都在你的眼前。除此之外:這樣的RuntimeExceptions可以顯示在代碼中的任何地方,它們並不侷限於放置try/catch的地方!

0

我覺得

BufferedReader strin = new BufferedReader(new InputStreamReader(
      System.in)); 
在塊嘗試

/捕獲