这个你就这么理解,在一个方法中如果某个语句块可能出现异常,则可以使用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;
- }
- }
复制代码 这样你就懂了吧 |