我在学Java的封装类,请问这两段代码区别在哪????

来源:百度知道 编辑:UC知道 时间:2024/09/18 04:55:32
class Test
{
public static void main(String[] args)
{

String str="123";
try
{
Integer ss=Integer.valueOf("str");
}
catch(Exception e)
{
e.printStackTrace();
}
System.out.println("ss="+ss);
}
}
与下面的代码的区别

class Test
{
public static void main(String[] args)
{
String str="123";
System.out.println(Integer.valueOf(str));
}
}

给你看一下你的Integer.valueOf(str)在API是的定义先:
public static Integer valueOf(String s) throws NumberFormatException
你会发现这个方法后面会有一个throws NumberFormatException这句话。如果你学过异常,你应该明白是怎么回事了。
NumberFormatException继承于IllegalArgumentExceptiond,而IllegalArgumentException继承于RuntimeException.

RuntimeException是一个可编绎通过的异常,你可以用try catch来捕获,当然你也可以不捕获。
区别在于:
1。如果你的str确实是一个只包含数字的字符串,意味着这条语句并没有抛出异
常,那么你的两段代码的结果是一样的。
2。如果你的str里包含了非数字的字符,比如你的str是"123hdsdf",那么Integer.valueOf(str))这个语句会抛出异常。第一段代码里的catch块里的内容会运行到。而第二段代码的System.out.println(Integer.valueOf(str))就会抛出异常,如果以下还有代码终无法运行到。

注:代码在运行到异常时,又没有用catch捕获,那么程序就会运行终止。

小人不才 除了发现上面的代码采用的异常处理 就没什么发现了
上面代码中的Try/Cathch
如果str中的值不是数字 则报告 FormatNumber什么什么的 异常
下面代码 如果str 中不是123 是其他字符 则报错 中断运行 不打印任何东西
上面的Try/Cathch 代码 报告异常 带代码仍继续运行 有打印结果
本人没测试 估计是打印"ss="