Может ли кто-нибудь из вас объяснить различия между throw
, throws
и Throwable
и когда использовать какой?
Обработка исключений: бросок, броски и Throwable
Ответ 1
-
throws
: используется при написании методов, чтобы объявить, что данный метод выбрал указанное (отмеченное) исключение.В отличие от проверенных исключений, исключение из среды выполнения (NullPointerExceptions и т.д.) может быть выбрано без использования метода declare
throws NullPointerException
. -
throw
: Инструкция для фактического выброса исключения. (Или, более конкретно, Throwable).За ключевым словом throw следует ссылка на
Throwable
(обычно это исключение).
Пример:
-
Throwable
: класс, который вы должны расширить, чтобы создать свой собственный, настраиваемый, сбрасываемый.
Пример:
Ответ 2
-
throw
: оператор throw объектаt
, гдеt instanceof java.lang.Throwable
должен быть истинным. -
throws
: токен подписи метода для указания проверенных исключенийthrow
n этим методом. -
java.lang.Throwable
: родительский тип всех объектов, которые могут быть выбраны (и пойманы).
Ответ 3
Это очень легко понять.
java.lang.Throwable:
Класс
Throwable
суперкласс всех ошибок и исключения на языке Java. Только объекты, которые являются экземплярами этого класс (или один из его подклассов) брошенный виртуальной машиной Java или могут быть выброшены Javathrow
. Аналогично, только этот класс или один из его подклассы могут быть аргументом введите в предложениеcatch
. Подробнее
В объявлении метода используется ключевое слово throws, это указывает, какое исключение [Throwable class] мы можем ожидать от этого метода.
Ключевое слово throw используется для выброса объекта, который является экземпляром класса Throwable.
Чтобы не увидеть пример:
Мы создаем себе класс исключений
public class MyException super Exception {
}
Мы создаем метод, который создает объект из нашего класса исключений и выдает его с помощью ключевого слова 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
, которые не должны быть объявлены. Это еще одна история в качестве аспекта использования исключений.
Ответ 4
throw - Используется для выброса Exception. Для оператора throw требуется один аргумент: объект класса с возможностью добавления
throws - используется для указания, что метод может исключать исключение
Throwable - это суперкласс всех ошибок и исключений на языке Java. вы можете бросать только объекты, которые происходят из класса Throwable. throwable содержит моментальный снимок стека выполнения его потока в момент его создания.
Ответ 5
Throw
используется для исключения исключения, throws
(если я правильно догадался) используется, чтобы указать, что этот метод может вызвать конкретное исключение, а класс Throwable
является суперклассом всех ошибок и исключений в Java
Ответ 6
Throw:
используется для фактического выброса исключения, тогда как throws является декларативным для метода. Они не взаимозаменяемы.
throw new MyException("Exception!);
Броски:
Это должно использоваться, когда вы не используете оператор try catch в своем коде, но знаете, что этот конкретный класс способен выбрасывать такое исключение (только проверенные исключения). В этом случае вы не используете блок catch try, но пишите с помощью предложения throw в соответствующей точке вашего кода, и исключение передается вызывающему методу и обрабатывается им. Также ключевое слово throw используется, когда функция может вызывать проверенное исключение.
public void myMethod(int param) throws MyException
Ответ 7
Throwable :
в Java, все классы ошибок и исключений выходят из класса java.lang.Throwable. Это вершина иерархии классов ошибок и исключений. Только объекты, являющиеся экземплярами этого класса (или одного из его подклассов), выдаются виртуальной машиной Java или могут быть брошены инструкцией Java throw.
Throws:
является модификатором пост-метода и указывает, какие методы могут быть вызваны методом. Если они отмечены исключениями, компилятор гарантирует, что код, вызывающий этот метод, должен поймать эти проверенные исключения.
Throw:
используется для выброса ошибки или исключений. throw требует один аргумент: экземпляр любого подкласса класса Throwable или Throwable. Выполнение инструкции throw запускает JVM для исключения этого исключения и вызывает исключение.
Ответ 8
Листинг...
Бросок
- Ключевое слово Java
throw
используется для явного исключенияthrow
исключения. - Проверенное исключение не может быть распространено только с помощью
throw
. -
throw
следует экземпляр. -
throw
используется внутри метода. - Вы не можете использовать
throw
несколько исключений.
Выдает
- Ключевое слово Java
throws
используется для объявления исключения. - Проверенное исключение может быть распространено с помощью
throws
. -
throws
следует класс. -
throws
используется с сигнатурой метода. - Вы можете объявить несколько исключений , например.
public void method()throws IOException,SQLException
Ответ 9
Тот же ответ, что и выше, но с удовольствие от копирования-пасты:
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;
}
}