Базовый класс для объектов исключений, предназначенных для управления потоком.
Экземпляры ControlThrowable обычно не должны перехватываться.
Для удобства, NonFatal не совпадает с ControlThrowable.
import scala.util.control.{Breaks, NonFatal}, Breaks.{break, breakable}
breakable {
for (v <- values) {
try {
if (p(v)) break
else ???
} catch {
case NonFatal(t) => log(t) // can't catch a break
}
}
}
Обработка подавления отключена, потому что управление потоком не должно подавлять исключительное состояние. Отслеживание стека также отключено, что позволяет экземплярам ControlThrowable безопасно повторно использовать.
Экземпляры ControlThrowable обычно не должны иметь причину. Подклассы наследия могут устанавливать причину, используя initCause.