The short answer is, it is not. If the exception extends to the entire exit from the stream, it will simply die (it may generate some error on the console).
What you might be interested in is to catch all the exceptions in your external stack frame (i.e. your run-method that started the thread) that puts the exception in a queue or other communication mechanism (perhaps along with some metadata, such as stream identifier, etc.) until the stream stops. Then the queue is requested regularly by the parent thread (or uses some other notification mechanism to wake up the parent thread, such as wait / notify or Condition-objects).
source share