Bohr-L Bohr-L
首页
技术
常见面试题
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

刘博

I'm a slow walker, But I never walk backwards.
首页
技术
常见面试题
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 数据处理与存储类

  • Spring 生态类

  • 缓存问题类

  • 多线程类

  • JVM 类

  • MySQL 类

  • Java 8 + 特性类

    • 使用 Java 8 的优点是什么?
    • 集合与流有何不同?
    • 什么是 Lambda 表达式?
    • 解释 Predicate 和 Consumer 函数式接口
    • peek () 方法在 Java 8 中的作用?
    • 什么是函数式接口?
    • 接口中的静态方法有什么作用?
    • skip (long) 和 limit (long) 的区别?
    • 抽象类和接口的异同?
    • overload 与 override 的区别?
    • HashMap 在 Java 8 中的变化?
    • HashMap、LinkedHashMap、Hashtable、ConcurrentHashMap 的区别?
    • Lambda 参数列表与箭头运算符的作用?
    • sleep () 和 wait () 的区别?
    • throw 与 throws 的区别?
      • final、finally、finalize 的区别?
      • Collection 与 Collections 的区别
      • ArrayList、LinkedList、Vector 的区别?
    • 其他技术类

    • 常见面试题
    • Java 8 + 特性类
    刘博
    2025-12-29
    目录

    throw 与 throws 的区别?

    throw和throws均是 Java 中用于 “异常处理” 的关键字,核心差异在于 “作用、使用位置、语法”:

    # 1. 核心区别

    对比维度 throw throws
    核心作用 手动抛出具体的异常对象(触发异常) 声明方法可能抛出的异常类型(告知调用者)
    使用位置 方法体内部(可在任意代码块中使用) 方法声明处(方法名后,参数列表与大括号之间)
    语法格式 throw new 异常类(异常信息);(只能抛出一个异常对象) 方法返回值 方法名(参数) throws 异常类1, 异常类2...;(可声明多个异常类型)
    异常类型 可抛出 checked 异常(需处理)和 unchecked 异常(无需处理) 可声明 checked 异常(强制调用者处理)和 unchecked 异常(可选处理)
    执行效果 执行到 throw 时,立即终止当前代码块,抛出异常 仅声明异常,不触发异常,异常由方法内部的 throw 或代码错误触发

    # 2. 示例

    java

    运行

    // 1. throws:声明方法可能抛出的异常
    public static void readFile(String path) throws FileNotFoundException, IOException {
        File file = new File(path);
        if (!file.exists()) {
            // 2. throw:手动抛出具体异常对象
            throw new FileNotFoundException("文件不存在:" + path);
        }
        // 读取文件(可能抛出IOException)
        FileReader reader = new FileReader(file);
    }
    
    // 调用者处理异常
    public static void main(String[] args) {
        try {
            readFile("test.txt");
        } catch (FileNotFoundException e) {
            System.out.println("处理文件不存在异常:" + e.getMessage());
        } catch (IOException e) {
            System.out.println("处理IO异常:" + e.getMessage());
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21

    # 3. 关键注意事项

    • throw抛出的 checked 异常(如FileNotFoundException),必须在方法上用throws声明,或在方法内用try-catch处理;
    • throws声明的异常,调用者必须处理(try-catch)或继续用throws声明(向上传递);
    • throw抛出的 unchecked 异常(如NullPointerException、RuntimeException),可不用throws声明,调用者也可不用处理(但可能导致程序崩溃)。

    上次更新: 12/30/2025
    sleep () 和 wait () 的区别?
    final、finally、finalize 的区别?

    ← sleep () 和 wait () 的区别? final、finally、finalize 的区别?→

    最近更新
    01
    CPU 使用率较高排查和解决
    12-29
    02
    JVM OOM 问题如何排查和解决
    12-29
    03
    接口防刷怎么实现?
    12-29
    更多文章>
    Theme by Vdoing | Copyright © 2025-2026 Bohr-L's note
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式