Это действительно легко понять.
java.lang.Throwable :
Класс Throwable
является суперклассом всех ошибок и исключений в языке Java.Только объекты, которые являются экземплярами этого класса (или одного из его подклассов), выбрасываются виртуальной машиной Java или могут быть выброшены оператором Java throw
.Аналогично, только этот класс или один из его подклассов могут быть типом аргумента в предложении 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
, которые не должны быть объявлены.Это другая история как аспект использования исключений.