Что такое класс Throwable? Класс Throwable — это суперкласс всех ошибок или исключений в языке Java. Это общий класс, который объединяет все исключения. Его функция — извлекать информацию об ошибках, хранящуюся в стеке.
Класс Error — это подкласс класса Throwable, включающий системные исключения, исключения виртуальных машин и другие проблемы, которые не могут быть предотвращены пользователями.
Класс Exception также является подклассом класса Throwable. Это исключение, которое может обрабатываться самой программой. Оно делится на исключения времени выполнения (проверенные) и исключения, не связанные с выполнением (непроверенные). Исключения времени выполнения могут обрабатываться, а могут и не обрабатываться; исключения, не относящиеся к времени выполнения, должны обрабатываться.
Исключения времени выполнения — это все исключения класса RuntimeException и его подклассов, таких как NullPointerException, IndexOutOfBoundsException и т. д. Эти исключения не проверяются и могут быть перехвачены или не обработаны в программе. Эти исключения обычно вызваны логическими ошибками программы, и программа должна стараться избегать возникновения таких исключений с логической точки зрения.
Когда возникает RuntimeException, нам не нужно его обрабатывать, и обычно виртуальная машина берет на себя управление.
Если после возникновения исключения во время выполнения исключение не перехвачено и не обработано (то есть нет перехвата), система выдаст исключение на весь верхний уровень. Если оно многопоточное, оно будет выброшено. Thread.run(). Если он однопоточный, он будет вызван Thread.run(). Он создается main(). После броска, если это поток, поток выйдет. Если исключение выдается основной программой, то вся программа завершится. Исключения времени выполнения являются подклассами класса Exception и также обладают характеристиками общих исключений, то есть могут обрабатываться блоками catch. Просто мы часто этого не обрабатываем. То есть, если вы не обрабатываете исключения во время выполнения, то после возникновения исключения во время выполнения либо поток завершится, либо основная программа завершится.
Если вы не хотите завершать работу, вы должны перехватывать все исключения во время выполнения и никогда не позволять этому потоку обработки завершаться. Если в очереди появляются аномальные данные, нормальная обработка должна заключаться в удалении аномальных данных и последующей записи в журнал. Наличие аномальных данных не должно влиять на последующую обработку нормальных данных.
Исключения, не относящиеся к среде выполнения, — это исключения, отличные от RuntimeException, и все они принадлежат классу Exception и его подклассам. Например: IOException, SQLException и т. д., а также определяемые пользователем исключения. В случае такого рода исключений компилятор Java заставляет нас перехватывать и обрабатывать эти исключения, иначе программа не будет скомпилирована. Поэтому, сталкиваясь с такого рода исключениями, нравится нам это или нет, нам приходится писать множество блоков catch для обработки возможных исключений.