"How come you always get exactly 3 tasks?"
"How about doing another 50?"
"I guess it would be better to just do the usual 3."
Wait and see
All exceptions that occur while the Solution thread is running must be handled by one of these options: 1. If it's an Error, then display "Can't keep running". 2. If it's an Exception, then display "Needs handling". 3. If it's a Throwable, then display "Wait and see". Implement this logic.
Arming ourselves to the teeth!
Create your own UncaughtExceptionHandler as a local class inside the constructor. The UncaughtExceptionHandler should hide the thread name with asterisks and display a description of the error that occurred. "Thread-0" must be replaced with "********". "Thread-4321" must be replaced with "*********
Charting our own course
Implement the UncaughtExceptionHandler interface in the Solution class, which must: 1. Interrupt the thread that threw the exception. 2. Display the exception's stack trace, starting with the innermost exception.