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