Вопрос

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

Это было полезно?

Решение

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

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

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

    Ключевое слово броска сопровождается ссылкой на Throwable (обычно исключение).

Пример:

enter image description here


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

Пример:

enter image description here


Другие советы

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

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

Это действительно легко понять.

То java.lang.throwable:

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

Ключевое слово бросать Используется в декларации метода, это указывает, какое исключение [моторируемый класс] мы можем ожидать от этого метода.

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


Не посмотрим пример:

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

public class MyException super Exception {

}

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

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(), Мы вынуждены позаботиться об этом определенным образом, потому что у нас есть информация о том, что она что-то бросает, в этом случае у нас есть три варианта.

Первый вариант использует блок, попробуйте и ловить, чтобы обрабатывать исключение:

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. Везде, где вы используете метод, который бросает исключение, вы должны обрабатывать его, попробуйте заблокировать или добавлять декларации на ваши методы.

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

бросить - он используется для выброса исключения. Выбор броска требует единого аргумента: экипируемый объект класса

броски - это используется для указывает, что метод может бросить исключение

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

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

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

Бросать :

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

throw new MyException("Exception!);

Броски:

Это необходимо использовать, когда вы не используете оператор Try Chav Chat в своем коде, но вы знаете, что этот конкретный класс способен выбрасывать так и настолько исключение (только проверенные исключения). В этом вы не используете попробуйте CALL BLOCK, но напишите, используя пункт броска в соответствующей точке в вашем коде, и исключение бросается к абоненту метода и обрабатывается им. Также ключевое слово броски используется, когда функция может бросить проверенное исключение.

public void myMethod(int param) throws MyException 

Есть 2 основных типа исключений:
Исключения времени выполнения (не проверяют): например. NullPointerexception, ClassCastexception, ..
Проверенные исключения: например. FileNotFoundException, ClonenotsupportedException, ..

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

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

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

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;
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top