You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows环境下Kotlin使用try/catch块无法捕获异常问题

问题根因

你编写的catch块仅配置了捕获NumberFormatException类型异常,而PrintWriter初始化时文件不存在、路径非法或无写入权限抛出的java.io.FileNotFoundException和NumberFormatException无继承关联,因此无法被捕获。

修正方案

方案1:捕获指定IO异常

仅捕获文件不存在的对应异常,需要先导入对应IO包:

import java.io.PrintWriter
import java.io.FileNotFoundException

try {
    val writer = PrintWriter("something.txt")
} catch (e: FileNotFoundException) {
    println("捕获到异常:目标文件不存在或无写入权限")
}

方案2:捕获全量异常

如果需要覆盖try代码块内所有可能的异常场景,直接捕获父类Exception即可:

import java.io.PrintWriter

try {
    val writer = PrintWriter("something.txt")
} catch (e: Exception) {
    println("捕获到异常:${e.message}")
}
补充说明
  • Kotlin不存在Java的受检异常限制,你无需在方法上主动声明抛出FileNotFoundException,直接在catch中指定对应类型即可正常捕获。
  • Windows系统下如果文件路径包含空格、特殊字符,或是保存在需要管理员权限的目录(如C盘Program Files文件夹),也会触发FileNotFoundException,可以在catch块中调用e.printStackTrace()打印完整堆栈定位具体问题。

内容的提问来源于stack exchange,提问作者algor。

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 00:42:03