У меня есть 2 потока, основной поток, который является производителем, и потребитель. Когда потребитель генерирует ошибку, я передаю ее обратно в основной поток, чтобы выбросить ее, но:
- Как только исключение получено основным потоком, я не могу сбросить его, не выполнив consumer.join ( ), в противном случае исключение не перехватывается.
- , когда выдается ошибка из основного потока (которая не имеет ничего общего с потребителем), она перехватывается, только если потребитель не был запущен (т.е. поток запущен).
кажется, что все потоки, кроме основного, должны быть остановлены, чтобы иметь возможность перехватывать ошибки. Но это странно. Я не буду добавлять функцию «stopThread» во все броски, которые не связаны с потребителем.
У меня нет кода для отображения, потому что это более общий вопрос, и может быть какое-то общее правило, которое я не знаю. не стесняйтесь, если я получу информацию.