黑马程序员技术交流社区

标题: 关于一个异常的问题 [打印本页]

作者: 丁强强    时间: 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进行处理,届时,程序将中断,举个例子给你看吧

  1. public class TestException {

  2.         public static void main(String[] args) throws Exception {
  3.                 String str1 = "8";
  4.                 String str2 = "0";
  5.                 TestException.getResult(str1, str2);        //调用静态方法
  6.                 System.out.println("ok");
  7.                
  8.         }
  9.        
  10.         public static int getResult(String a, String b) throws Exception {        //定义一个静态方法,用于取得两数之商
  11.                 int value = 0;
  12. /*                int num1 = Integer.parseInt(a);
  13.                 int num2 = Integer.parseInt(b);
  14.                 value = num1/num2;*/
  15.                 try {
  16.                         int num1 = Integer.parseInt(a);
  17.                         int num2 = Integer.parseInt(b);
  18.                         value = num1/num2;
  19.                         System.out.println("运算结果是" + value);
  20.                        
  21.                 } catch (ArithmeticException e) {
  22.                         System.out.println(e.getMessage());                //打印出错的信息
  23.                         throw new RuntimeException("除数为0");        //第二种方式,重新包装后抛出去
  24.                        
  25.                 } catch (NumberFormatException e) {
  26.                         System.out.println(e.getMessage());  
  27.                         System.out.println(e.toString());
  28.                         e.printStackTrace();
  29.                 } catch (Exception e) {
  30.                         e.printStackTrace();
  31.                 } finally {
  32.                         System.out.println("我一定会出现的");
  33.                 }
  34.                 return value;
  35.         }

  36. }
复制代码
这样你就懂了吧




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2