Как исправить, & ldquo; FoxQZ2.java: 39: ошибка: незарегистрированное исключение IOException; должны быть пойманы или объявлены, чтобы их бросили & rdquo; это сообщение об ошибке в jGRASP? [Дубликат]

В то время как обещания и обратные вызовы хорошо работают во многих ситуациях, боль в задней части выражает нечто вроде:

if (!name) {
  name = async1();
}
async2(name);

. В итоге вы пройдете через async1; проверьте, не определено ли name или нет, и соответственно вызовите обратный вызов.

async1(name, callback) {
  if (name)
    callback(name)
  else {
    doSomething(callback)
  }
}

async1(name, async2)

Хотя в в порядке хорошо , это раздражает, когда у вас много подобных случаев и обработка ошибок.

Fibers помогает в решении проблемы.

var Fiber = require('fibers')

function async1(container) {
  var current = Fiber.current
  var result
  doSomething(function(name) {
    result = name
    fiber.run()
  })
  Fiber.yield()
  return result
}

Fiber(function() {
  var name
  if (!name) {
    name = async1()
  }
  async2(name)
  // Make any number of async calls from here
}

Вы можете проверить проект здесь .

0
задан Michael Myers 24 November 2014 в 23:50
поделиться

2 ответа

Измените объявление основного метода на:

public static void main(String[] args) throws IOException

В Java каждый метод. Вызов другого метода B должен объявить все исключения, которые B может выполнить (если они не являются потомками RuntimeException или если A не ловит и не обрабатывает их явно в блоке try-catch).

В вашем случае A есть main, B - printFile.

1
ответ дан peter.petrov 27 August 2018 в 10:10
поделиться

Вам нужен блок try-catch в вашем методе main во всех методах, которые бросают IOException:

try {
    printFile(gravity);
} catch (IOException ex) {
    // handle exception here
}

Включить все методы, которые имеют throws IOException после подписи.

1
ответ дан TNT 27 August 2018 в 10:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: