美文网首页
三、Java中级--2、错误处理的两个例子

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

作者: cybeyond | 来源:发表于2018-04-25 14:52 被阅读0次

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

    相关文章

      网友评论

          本文标题:三、Java中级--2、错误处理的两个例子

          本文链接:https://www.haomeiwen.com/subject/zkkycftx.html