三、Java中级--2、错误处理的两个例子

2018-04-25  本文已影响0人  cybeyond

1、字符串转换成整数

对字符串“hello”转换成整数时,会报错,但是如果将s定义为“100”,在转换时就不会出错,如下:

package javastudy;

public class Testit {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String s="hello";
        int i=Integer.parseInt(s); //Integer是int的封装类,parseInt是将s转换为整数,此时会报错
    }
}

报错信息Exception in thread "main" java.lang.NumberFormatException: For input string: "hello"
因此需要在此之前添加异常处理,try...catch...,其中try中定义可能会出错的代码,catch中定义发生错误以后,执行的代码,并将错误放入Exception e对象中,查看时可以调用查看报错信息。

package javastudy;

public class Testit {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String s="100a";  //定义为100a,会出错
        try {
            int i=Integer.parseInt(s); //可能会报错的代码
        } catch (Exception e) {
            // TODO: handle exception
            System.out.println("出错了");//try块中代码出错后执行的代码
        }
    }
}
结果
package javastudy;

public class Testit {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String s="100"; //定义为100,不会出错
        try {
            int i=Integer.parseInt(s); //可能会报错的代码
        } catch (Exception e) {
            // TODO: handle exception
            System.out.println("出错了");//try块中代码出错后执行的代码
        }
    }
}

查看详细的报错信息

package javastudy;

public class Testit {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String s="100a";
        try {
            int i=Integer.parseInt(s); //可能会报错的代码
        } catch (Exception e) {
            // TODO: handle exception
            System.out.println("出错了");//try块中代码出错后执行的代码
            System.out.println(e.getMessage());  //报错信息
            e.printStackTrace();  //详细堆栈报错信息
        }
    }
}
结果

2、必须处理错误的例子

下列的代码,利用反射的机制,动态的调用类,在本类中引用testit类,但是必须要处理

package javastudy;

public class Testit {

    public static void main(String[] args) {
        Class.forName("javastudy.testit");  //动态调用本类
    }
}
提示错误

按照提示解决的方法,使用try...catch解决

try {
            Class.forName("javastudy.testit");
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
上一篇下一篇

猜你喜欢

热点阅读