0

我目前正在尝试使用 Java 制作一个换档键持有人,使用重音作为切换键,而机器人是我能找到的唯一简单的方法。该程序执行顾名思义,并为我按住 shift 键。如果您想知道这将在哪里有用,请制作用于星界建筑的程序,因为有大写锁定。但是,当使用机器人时,我必须抛出一些异常,但它们随后会出现在我称之为 void 的地方

我找不到任何解决方案,可能是因为我正在使用 JNativeHook 库来创建一个对坟墓符号做出反应的键盘记录器。我还是个新手,我从网上的片段中拼凑了很多。

这就是我的错误的来源,完整的程序在这里可用 我会发布一个最小的可重现示例,但我不能,因为我不知道哪些部分对这一部分的功能至关重要。

//tried to put throws in nativeKeyPressed to get rid of the exceptions but then that gives me an exception saying i can't do that because it causes clashing
public void nativeKeyPressed(NativeKeyEvent e){
        System.out.println("Key Pressed: " + NativeKeyEvent.getKeyText(e.getKeyCode()));

        if (e.getKeyCode() == NativeKeyEvent.VC_BACKQUOTE) {
            toggle(); //get IOException, AWTException, and InterruptedException whenever i put throws on my toggle() void
        }
    }

        //throw exceptions so robot has no conflicts
    public static void toggle() throws IOException, AWTException, InterruptedException{
        bool = !bool;
        Robot r = new Robot();

        if (bool = true) {

        } else if (bool = false) {

        }

我希望它没有错误,但Robot()如果我不抛出它们就会有异常,并且toggle();有我抛出的任何异常public static void toggle()。我对机器人以外的方法持开放态度,但我找不到其他方法。

4

1 回答 1

0

除非您期待任何这些异常并且知道如何处理它们,否则只需包装您的异常

public static void rethrowException (Exception ex) {
  throw new RuntimeException(ex);
}
    //throw exceptions so robot has no conflicts
public static void toggle() {
  try {
    bool = !bool;
    Robot r = new Robot();

    if (bool = true) {

    } else if (bool = false) {

    }
  } catch (IOException|AWTException|InterruptedException ex) {
    throw new RuntimeException(ex);
  }
}
于 2019-07-03T19:12:10.263 回答