throws用于声明方法可能抛出的多个受检异常,用英文逗号分隔,写在方法签名末尾;所列异常必须是继承自Exception而非RuntimeException的类,调用方须捕获或继续声明。

在Java中,throws 关键字用于声明方法可能抛出的受检异常(checked exceptions),当一个方法内部可能抛出多个受检异常时,需要用英文逗号 , 隔开,写在方法签名的末尾,紧跟在参数列表右括号 ) 后面。
语法格式如下:
public void doSomething() throws IOException, SQLException, ClassNotFoundException {
// 方法体
}注意:
- 逗号必须是半角英文逗号,不能用中文逗号、顿号或空格代替;
- 异常类名之间不能有空行或换行干扰(但换行本身合法,只要逗号位置正确);
- 所列异常都必须是受检异常(即继承自
Exception但不继承自RuntimeException),否则编译器会报错(如throws NullPointerException会被拒绝,因为它是运行时异常); - 不需要按特定顺序排列,但建议按常见程度或逻辑关系组织,便于阅读。
常见写法示例:
立即学习“Java免费学习笔记(深入)”;
public void readFileAndSave() throws FileNotFoundException, IOException, SQLException {
FileInputStream fis = new FileInputStream("data.txt"); // 可能抛 FileNotFoundException
String content = readLine(fis); // 可能抛 IOException
saveToDatabase(content); // 可能抛 SQLException
}如果方法还调用了其他也声明了 throws 的方法,编译器会强制你把它们的受检异常全部声明出来,或用 try-catch 处理。例如:
void process() throws IOException, ParseException {
String s = readFromFile(); // throws IOException
Date d = parseDate(s); // throws ParseException
}⚠️ 注意:
-
throws只是声明,不代表一定会抛出; - 调用该方法的代码,要么用
try-catch捕获这些异常,要么继续向上throws; - 如果声明了多个异常,调用方需对每一个受检异常负责(捕获或再抛出)。
不复杂但容易忽略


















