Броски не перехватывают, когда выполняется более одного потока - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть 2 потока, основной поток, который является производителем, и потребитель. Когда потребитель генерирует ошибку, я передаю ее обратно в основной поток, чтобы выбросить ее, но:

  • Как только исключение получено основным потоком, я не могу сбросить его, не выполнив consumer.join ( ), в противном случае исключение не перехватывается.
  • , когда выдается ошибка из основного потока (которая не имеет ничего общего с потребителем), она перехватывается, только если потребитель не был запущен (т.е. поток запущен).

кажется, что все потоки, кроме основного, должны быть остановлены, чтобы иметь возможность перехватывать ошибки. Но это странно. Я не буду добавлять функцию «stopThread» во все броски, которые не связаны с потребителем.

У меня нет кода для отображения, потому что это более общий вопрос, и может быть какое-то общее правило, которое я не знаю. не стесняйтесь, если я получу информацию.

...