Обработка исключений: бросок, броски и Throwable

Может ли кто-нибудь из вас объяснить, каковы различия между throw , throws и Throwable и когда использовать их?

  • throws : Используется при написании методов, чтобы объявить, что данный метод выдает указанное (отмеченное) исключение.

    В отличие от проверенных исключений, исключений во время выполнения (NullPointerExceptions и т. Д.) Могут быть выброшены без использования метода declare throws NullPointerException .

  • throw : Инструкция, чтобы на самом деле выбросить исключение. (Или, точнее, Throwable ).

    За ключевым словом throw следует ссылка на Throwable (обычно это исключение).

Пример:

введите описание изображения здесь


  • Throwable : class, который вы должны расширить, чтобы создать свой собственный, настраиваемый, Throwable .

Пример:

введите описание изображения здесь


  • Официальное учебное пособие по исключению
  • throw : statement для того чтобы бросить объект t где t instanceof java.lang.Throwable должен быть правдой.
  • throws : токен подписи метода для указания проверенных исключений throw n этим методом.
  • java.lang.Throwable : родительский тип всех объектов, которые могут быть выброшены (и пойманы).

См. Здесь учебник по использованию исключений.

Это очень легко понять.

Java.lang.Throwable :

Класс Throwable является суперclassом всех ошибок и исключений на языке Java. Только объекты, являющиеся экземплярами этого classа (или одного из его подclassов), выдаются виртуальной машиной Java или могут быть выбраны оператором Java throw . Аналогично, только этот class или один из его подclassов может быть типом аргумента в предложении catch . Больше

Ключевое слово throw используется в объявлении метода, это указывает, какое исключение [Throwable class] мы можем ожидать от этого метода.

Ключевое слово throw используется для выброса объекта, который является экземпляром classа Throwable.


Чтобы не увидеть пример:

Мы создаем себе class исключений

 public class MyException super Exception { } 

Мы создаем метод, который создает объект из нашего classа исключений и бросает его с помощью ключевого слова throw .

 private void throwMeAException() throws MyException //We inform that this method throws an exception of MyException class { Exception e = new MyException (); //We create an exception if(true) { throw e; //We throw an exception } } 

Когда мы собираемся использовать метод throwMeAException() , мы вынуждены позаботиться об этом определенным образом, потому что у нас есть информация, которую он бросает, в этом случае у нас есть три варианта.

Первый вариант – использовать try и catch для обработки исключения:

 private void catchException() { try { throwMeAException(); } catch(MyException e) { // Here we can serve only those exception that are instance of MyException } } 

Второй вариант – передать исключение

  private void passException() throws MyException { throwMeAException(); // we call the method but as we throws same exception we don't need try catch block. } 

Третий вариант – уловить и повторно выбросить исключение

 private void catchException() throws Exception { try { throwMeAException(); } catch(Exception e) { throw e; } } 

Возобновление, когда вам нужно остановить какое-либо действие, вы можете выбросить исключение, которое вернется, пока не будет сервером с помощью некоторого блока try-catch. Где бы вы ни использовали метод, который генерирует исключение. Вы должны обработать его с помощью блока try-catch или добавить объявления к вашим методам.

Исключением этого правила являются java.lang.RuntimeException которые не должны быть объявлены. Это еще одна история в качестве аспекта использования исключений.

throw – Используется для выброса Exception. Для инструкции throw требуется один аргумент: classный объект classа

throws – используется для указания того, что метод может вызывать исключение

Throwable – это суперclass всех ошибок и исключений на языке Java. вы можете бросать только объекты, которые происходят из classа Throwable. throwable содержит моментальный снимок стека выполнения его streamа во время его создания

Throw используется для исключения исключений, throws (если я правильно догадался) используется, чтобы указать, что метод может Throwable конкретное исключение, а class Throwable – суперclass всех ошибок и исключений в Java

Как выбросить исключения

Бросок:

используется для фактического выброса исключения, тогда как броски являются декларативными для метода. Они не взаимозаменяемы.

 throw new MyException("Exception!); 

Броски:

Это должно использоваться, когда вы не используете оператор try catch в своем коде, но знаете, что этот конкретный class способен вызывать такое исключение (только проверенные исключения). В этом случае вы не используете блок catch try, но пишите с помощью предложения throw в соответствующей точке вашего кода, и исключение передается вызывающему методу и обрабатывается им. Также ключевое слово throw используется, когда функция может вызывать проверенное исключение.

 public void myMethod(int param) throws MyException 

Throwable : в Java весь class ошибок и execption вылечен из classа java.lang.Throwable. Это вершина иерархии classов ошибок и исключений. Только объекты, являющиеся экземплярами этого classа (или одного из его подclassов), выдаются виртуальной машиной Java или могут быть выбраны оператором Java throw.

Throws: это модификатор пост-метода и указывает, какие методы могут быть выбраны методом. Если они отмечены исключениями, компилятор гарантирует, что код, вызывающий этот метод, должен поймать эти проверенные исключения.

Throw: оператор используется для выброса ошибки или исключений. throw требует один аргумент: экземпляр любого подclassа classа Throwable или Throwable. Выполнение инструкции throw запускает JVM для исключения этого исключения и вызывает исключение.

Листинг несколько …

бросать

  1. Ключевое слово Java throw используется для явного исключения исключения.
  2. Проверенное исключение не может быть распространено с использованием только throw .
  3. За ним следует экземпляр.
  4. Throw методе используется Throw .
  5. Вы не можете throw несколько исключений.

Броски

  1. Ключевое слово Java throws используется для объявления исключения.
  2. Проверенное исключение может быть распространено с помощью throws .
  3. Throws следует class.
  4. Throws используются с сигнатурой метода.
  5. Вы можете объявить несколько исключений, например public void method()throws IOException,SQLException

Существует 2 основных типа исключений:
Исключения Runtime (непроверенные) : например. NullPointerException, ClassCastException, ..
Проверенные исключения: например. FileNotFoundException, CloneNotSupportedException, ..

Исключения Runtime являются исключениями, которые происходят во время выполнения, и разработчик не должен пытаться его поймать или остановить. Вы только пишете код, чтобы избежать их или выдавать бросок команды, когда выполняются критерии ошибки. Мы используем бросок внутри тела метода.

 public Rational(int num, int denom){ if(denom <= 0) { throw new IllegalArgumentException("Denominator must be positive"); } this.num=num; this.denom=denom; } 

Однако для проверенных исключений JVM ожидает, что вы справитесь с этим и сообщите об ошибке компилятора, если не будете обработаны, поэтому заявляете, что он выбрасывает этот тип исключения, как показано ниже в методе clone ().

 Class Employee{ public Employee clone() throws CloneNotSupportedException{ Employee copy = (Employee)super.clone(); copy.hireDate = (Date)hireDate.clone(); return copy; } } 

Тот же ответ, что и выше, но с удовольствием от копирования :

 public class GsonBuilderHelper { // THROWS: method throws the specified (checked) exception public static Object registerAndRun(String json) throws Exception { // registering of the NaturalDeserializer GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.registerTypeAdapter(Object.class, new NaturalDeserializer()); Gson gson = gsonBuilder.create(); Object natural = null; try { // calling the NaturalDeserializer natural = gson.fromJson(json, Object.class); } catch (Exception e) { // json formatting exception mainly Log.d("GsonBuilderHelper", "registerAndRun(json) error: " + e.toString()); throw new Exception(e); // <---- THROW: instance of class Throwable. } return natural; } } 
Давайте будем гением компьютера.