zoukankan      html  css  js  c++  java
  • throw和throws的区别?

    throw:

    • 表示方法内抛出某种异常对象
    • 如果异常对象是非 RuntimeException 则需要在方法申明时加上该异常的抛出 即需要加上 throws 语句 或者 在方法体内 try catch 处理该异常,否则编译报错
    • 执行到 throw 语句则后面的语句块不再执行


    throws:

    • 方法的定义上使用 throws 表示这个方法可能抛出某种异常
    • 需要由方法的调用者进行异常处理
    package constxiong.interview;
     
    import java.io.IOException;
     
    public class TestThrowsThrow {
     
        public static void main(String[] args) {
            testThrows();
            
            Integer i = null;
            testThrow(i);
            
            String filePath = null;
            try {
                testThrow(filePath);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        
        /**
         * 测试 throws 关键字
         * @throws NullPointerException
         */
        public static void testThrows() throws NullPointerException {
            Integer i = null;
            System.out.println(i + 1);
        }
        
        /**
         * 测试 throw 关键字抛出 运行时异常
         * @param i
         */
        public static void testThrow(Integer i) {
            if (i == null) {
                throw new NullPointerException();//运行时异常不需要在方法上申明
            }
        }
        
        /**
         * 测试 throw 关键字抛出 非运行时异常,需要方法体需要加 throws 异常抛出申明
         * @param i
         */
        public static void testThrow(String filePath) throws IOException {
            if (filePath == null) {
                throw new IOException();//运行时异常不需要在方法上申明
            }
        }
    }


      

      

    来一道刷了进BAT的面试题?

  • 相关阅读:
    Hadoop深入学习:MapTask详解
    设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)
    GIT使用教程与基本原理
    网络爬虫浅析
    字符串模式匹配sunday算法
    linux ---- diff命令
    递归树的算法分析
    二叉树非递归实现
    链表相邻元素交换
    明星问题
  • 原文地址:https://www.cnblogs.com/ConstXiong/p/11827856.html
Copyright © 2011-2022 走看看