Одна проблема со многими языками и средами, которые выводят свои общие концепции обработки исключений из C ++, состоит в том, что слишком много вещей эффективно кодируются в виде исключения.Проверенные исключения были бы хорошей идеей, , если бы различие между проверкой и непроверкой было сделано на сайтах броска и вылова, а не в объявлении исключения , и если был способ кратко указатьэти определенные проверенные исключения должны быть переброшены как непроверенные.К сожалению, Java требует, чтобы любое исключение данного типа всегда создавалось как проверенное или всегда как непроверенное, в зависимости от типа, и не предоставляет удобного или краткого способа сопоставления проверенных исключений с непроверенными.Вместо этого удобнее всего использовать проверенные исключения как проверенные исключения, что увеличивает фактор «неудобства» при одновременном снижении их полезности.
Если проверенные исключения были реализованы на сайте выброса, и если обычным способомобработка нежелательных проверенных исключений заключалась в том, чтобы преобразовать их в непроверенные, тогда можно было быть уверенным, что метод, который указывает конкретное условие сбоя путем генерирования определенного проверенного исключения, будет выбрасывать это проверенное исключение только тогда, когда он «хочет» сообщить об этой конкретной ошибке;если возникнет непредвиденное исключение того же типа во время выполнения метода, оно преобразуется в непроверенное исключение.Такая модель «проверенных исключений» может быть полезной и может также привести к более эффективному коду, чем обычные исключения (поскольку проверенные исключения должны будут обрабатываться непосредственно вызывающим подпрограммой, вызывающей их, большая часть разматывания стека и трассировки стека требуютсядля нормальной обработки исключений можно было бы пропустить).К сожалению, «проверенные исключения» Java не работают таким образом.