黑马程序员技术交流社区
标题:
关于一个异常的问题
[打印本页]
作者:
丁强强
时间:
2013-1-26 10:17
标题:
关于一个异常的问题
本帖最后由 张向辉 于 2013-1-27 11:01 编辑
对什么时候throws
什么时候 try
有点疑惑。
作者:
vmvm555
时间:
2013-1-26 11:00
这个你就这么理解,在一个方法中如果某个语句块可能出现异常,则可以使用try{}catch{}语句对其进行捕捉,在catch{}语句块中对异常进行处理,如过你还不想处理的话,你可以对这个异常进行在包装,使用throws关键字继续往上扔,交由调用这个方法的方法进行处理,不过要在原方法的上面标示抛出那种异常或该异常的父类,这样程序员调用这个方法时,就会知道我是继续用try{}catch{}对异常进行捕捉,还是我也往上扔,最后可能会在直接抛到main()方法上,main()方法是程序的起点,在main()方法后面加上throws抛出异常后直接交给jvm进行处理,届时,程序将中断,举个例子给你看吧
public class TestException {
public static void main(String[] args) throws Exception {
String str1 = "8";
String str2 = "0";
TestException.getResult(str1, str2); //调用静态方法
System.out.println("ok");
}
public static int getResult(String a, String b) throws Exception { //定义一个静态方法,用于取得两数之商
int value = 0;
/* int num1 = Integer.parseInt(a);
int num2 = Integer.parseInt(b);
value = num1/num2;*/
try {
int num1 = Integer.parseInt(a);
int num2 = Integer.parseInt(b);
value = num1/num2;
System.out.println("运算结果是" + value);
} catch (ArithmeticException e) {
System.out.println(e.getMessage()); //打印出错的信息
throw new RuntimeException("除数为0"); //第二种方式,重新包装后抛出去
} catch (NumberFormatException e) {
System.out.println(e.getMessage());
System.out.println(e.toString());
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("我一定会出现的");
}
return value;
}
}
复制代码
这样你就懂了吧
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2