2017-03-18 10 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

私はブロックのtry/catch

BufferedReader strin = new BufferedReader(new InputStreamReader(
      System.in)); 

を考えます