在 Java 里,“throws 抛出”通常指的是在方法声明中使用 throws 关键字声明异常,以及使用 throw 关键字手动抛出异常。这是 Java 异常处理中非常重要的一部分。下面从概念 → 用法 → 学习路径 → 常见坑一步步讲,适合初学者系统学习。
throw(手动抛异常)throw new Exception("出错了");
throws(声明可能抛异常)public void test() throws IOException {
}
✅ 一句话记忆:
throw 是“抛动作”,throws 是“提前说一声”
public void checkAge(int age) {
if (age < 18) {
throw new IllegalArgumentException("年龄必须大于18");
}
}
public void readFile() throws IOException {
FileInputStream fis = new FileInputStream("a.txt");
}
public static void main(String[] args) {
try {
readFile();
} catch (IOException e) {
e.printStackTrace();
}
}
Java 异常分为两大类:
IOException, SQLExceptionNullPointerException, IllegalArgumentExceptiontry {
// 可能出错的代码
} catch (Exception e) {
e.printStackTrace();
}
class BusinessException extends Exception {
public BusinessException(String msg) {
super(msg);
}
}
❌ 错误 1:throws 了但不处理也不继续抛
void a() throws IOException {
b(); // b 抛 IOException,但没处理
}
❌ 错误 2:用 throws 代替 try-catch(滥用)
throws 不是“解决异常”,只是“转移责任”
❌ 错误 3:捕获了异常但什么都不做
catch (Exception e) {
// 空 catch,很危险
}
✅ 多写小例子
✅ 看 JDK 源码(如 InputStream.read())
✅ 写业务逻辑时,该抛就抛,该捕获就捕获
✅ 记住一句话:
底层抛,上层决;业务异常自己定
如果你愿意,我可以:
你想从哪一步继续?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。