при вызове void с ключевым словом throws все брошенные ошибки относятся к тому месту, где я вызываю void - PullRequest
0 голосов
/ 03 июля 2019

В настоящее время я пытаюсь сделать держатель клавиши Shift с Java, используя серьезный акцент в качестве переключателя, и робот был единственным способом, который я мог найти, который был дистанционно простым. программа делает то, что подразумевает название, и удерживает клавишу Shift для меня. создание программы для звездного строительства, если вам интересно, где это будет полезно, так как есть capslock. однако при использовании робота я должен выбросить несколько исключений, но затем они появляются в том месте, где я называю свою пустоту

Я не могу найти никакого решения для этого, возможно, потому что я использую библиотеку 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(). Я открыт для других методов, кроме роботов, но не могу найти других.

1 Ответ

0 голосов
/ 03 июля 2019

Если вы не ожидаете каких-либо из этих исключений и не знаете, как с ними обращаться, просто оберните ваши исключения

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);
  }
}
...