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

Java中main方法try/catch未抛异常却直接终止程序问题

问题分析与解决

首先别担心,你看到的 terminated Main (1) [Java Application] 其实是程序正常执行完毕的提示,不是程序崩溃或者异常终止哦!作为Java新手很容易把这个当成错误,其实这是IDE在告诉你:你的main方法已经执行完所有代码,程序自然退出了。

咱们来拆解你的代码:

@SuppressWarnings("null")
public static void main(String[] args) {
    Robot robot = null;
    try {
        robot = new Robot();
    } catch (AWTException e) {
        e.printStackTrace();
    }
}
  • 你在try块里只做了一件事:实例化Robot对象。如果这个过程没有抛出AWTException(也就是你的系统支持Robot类的功能),那么try块执行完后,main方法就没有其他代码要运行了,程序直接结束,IDE就会显示那个“terminated”提示。
  • 至于catch块,只有当new Robot()失败(比如系统不允许创建Robot实例、缺少相关权限)时才会触发,你说程序从未抛出异常,说明catch块根本没被执行到。

怎么让程序有实际动作?

如果你想看到Robot的功能效果,在实例化后加一些具体操作就行,比如移动鼠标或者模拟按键:

@SuppressWarnings("null")
public static void main(String[] args) {
    Robot robot = null;
    try {
        robot = new Robot();
        // 让鼠标移动到屏幕坐标(100,100)的位置
        robot.mouseMove(100, 100);
        // 等待2秒,让你能看到鼠标移动的效果
        Thread.sleep(2000);
        // 模拟按下并释放回车键
        robot.keyPress(KeyEvent.VK_ENTER);
        robot.keyRelease(KeyEvent.VK_ENTER);
    } catch (AWTException e) {
        e.printStackTrace();
    } catch (InterruptedException e) {
        // 处理sleep可能抛出的中断异常
        e.printStackTrace();
    }
}

这样程序执行时会有实际的操作,不会立刻结束,你就能直观看到Robot的作用啦。

另外提醒一下:使用Robot类可能需要系统权限(比如在某些操作系统里需要允许程序控制输入设备),如果后续遇到异常,再去排查权限问题就好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:54:17