关于 Java try-catch 异常处理



为什么在我的 try 块中没有什么可处理的,却抛出了一个异常?

当我输入一些字符串类型内容时,抛出"线程"main"中的异常

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);
    }
}

异常会在您尝试/捕获抛出!

发生这种情况是因为您无法将 s1 中的字符串值"ss"转换为数字。

真正的答案是:专注于阅读这些异常消息:它们准确地告诉您问题所在以及导致问题的原因。这一切都在你眼前。除此之外:这样的运行时异常可以出现在你的代码中的任何位置,它们不限于你放下尝试/捕获的地方!

我认为

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

在块中尝试/捕获

最新更新