zoukankan      html  css  js  c++  java
  • Java基础知识强化之IO流笔记04:throw和throws的区别

    1. throw概述

    在功能方法内部出现某种问题,程序不能继续运行,需要进行跳转时,就用throw把异常对象抛出。

    2. 案例演示:

    (1)

     1 package com.himi.throwdemo;
     2 
     3 public class ExceptionDemo2 {
     4     public static void main(String[] args) {
     5          method();
     6         
     7 //        try {
     8 //            method2();
     9 //        } catch (Exception e) {
    10 //            e.printStackTrace();
    11 //        }
    12     }
    13 
    14     public static void method() {
    15         int a = 10;
    16         int b = 0;
    17         if (b == 0) {
    18             throw new ArithmeticException();
    19         } else {
    20             System.out.println(a / b);
    21         }
    22     }
    23 
    24     public static void method2() throws Exception {
    25         int a = 10;
    26         int b = 0;
    27         if (b == 0) {
    28             throw new Exception();
    29         } else {
    30             System.out.println(a / b);
    31         }
    32     }
    33 
    34 }

    运行结果如下:

    上面调用method方法中,由于b==0,那么就会出现如下:

    throw new ArithmeticException();  就会打印下面的信息

    当然也可以throw new ArithmeticException("我错了");  就会打印下面的信息

    (2)

     1 package com.himi.throwdemo;
     2 
     3 public class ExceptionDemo2 {
     4     public static void main(String[] args) {
     5          //method();
     6         //调用者调用method2()方法,try……catch捕获处理异常。
     7         try {
     8             method2();
     9         } catch (Exception e) {
    10             // TODO 自动生成的 catch 块
    11             System.out.println("catch语句块处理捕获的异常");
    12         }
    13     }
    14 
    15     public static void method() {
    16         int a = 10;
    17         int b = 0;
    18         if (b == 0) {
    19             throw new ArithmeticException("我错了");
    20         } else {
    21             System.out.println(a / b);
    22         }
    23     }
    24 
    25     public static void method2() throws Exception {//这里method2抛出异常Exception,交给调用者处理
    26         int a = 10;
    27         int b = 0;
    28         if (b == 0) {
    29             throw new Exception();//这里是抛出是new Exception(异常的超类),它是编译时期异常,必须处理(上抛)
    30         } else {
    31             System.out.println(a / b);
    32         }
    33     }
    34 
    35 }

     运行程序,效果如下:

    3.throws和throw的区别(面试题)

        throws(异常抛出,不处理

                        用在方法声明后面,跟的是异常类名

                        可以跟多个异常类名,用逗号隔开

                        表示抛出异常,由该方法的调用者来处理

                        throws表示出现异常的一种可能性,并不一定会发生这些异常

         throw(异常处理,打印信息

                        用在方法体内,跟的是异常对象名

                        只能抛出一个异常对象名

                        表示抛出异常,由方法体内的语句处理

                        throw则是抛出了异常,执行throw则一定抛出了某种异常

  • 相关阅读:
    hudson用SVN插件下载代码,用ant插件打包, 用SSH插件部署
    CSS加DIV布局
    CSS父元素高度随子元素高度变化而变化
    iframe父页面获取iframe子页面的元素 与 iframe子页面获取父页面元素
    基于ZooKeeper的Dubbo注册中心
    最近项目用到Dubbo框架,临时抱佛脚分享一下共探讨。
    接口测试中三种传参请求(Map、request、Integer)解析
    测试培训大纲第一课时,软件测试基础(培训待续中....)
    架构从最简单的数据访问框架(ORM)到资源调度和治理中心(SOA)说起
    让shell脚本在后台飞
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4844318.html
Copyright © 2011-2022 走看看