Это мой код
static void tryit() throws Exception
{
System.out.println(10 / 0);
}
public static void main(String[] args)
{
try {
tryit();
} catch (Exception e) {
System.out.println("Exception caught in main");
}
}
вот что такое блуждание, в строке 1 этого кода throws Exception
что именно делает?
Даже если бы я не использовал это, я также получил тот же результат, что и
Результат: Исключение в основной
Где это будет эффективно? Нужно ли в этом коде?
вот что такое блуждание, в строке 1 этого кода "бросает исключение", что именно делает?
Он возложил ответственность на вызывающую функцию, что этот метод может вызвать исключение, вы [Caller] должны его обработать.
И, в вашем случае, это RuntimeException
будет RuntimeException
из этого метода, поэтому нет необходимости объявлять метод с Exception. Вот почему, хотя, если вы удалили эту команду, она выбрасывает часть Exception.
Если метод выкинет проверенное исключение, и если вы не обработаете его внутри самого метода, вы объявите о том, чтобы выкинуть это исключение в подпись метода.
В этом случае вам не нужно throws Exception
потому что ArithmeticException
- это RuntimeException
, компилятор не знает, что он будет выброшен, поэтому он не заставит вас справиться с этим. Видеть:
Случаи, когда вы должны это делать, если у вас есть исключение, а не исключение для выполнения, и вы не окружите строку, которая может вызвать исключение с предложением try-catch, тогда вам придется объявить метод, который будет throws ThatException
,
in line 1 of this code "throws Exception" what exactly does?
throws указывает компилятору, что метод с ключевым словом throws имеет исключительное условие и не будет обрабатывать это исключение. Ответственность за любой метод, который вызвал метод с ключевым словом throw, несет ответственность за это исключение.
В вашем случае tryit() выбрасывает исключение, не обрабатывая исключительное условие. В основном вы вызвали tryIt(), поэтому основная задача - обработать исключительное исключение tryIt() throws Exception.
Where it will be effective? Is it necessary in this code?
Он эффективен, когда вы хотите, чтобы ваш метод вызывался с использованием правильной уловки try (проверенный тип исключения).
Это не обязательно в этом коде, потому что в коде, который вы получаете, java.lang.ArithmeticException:/путем исключения, которое является компилятором RuntimeException (Un Checked type), не будет жаловаться на то, что он не обрабатывает его.
для получения дополнительной информации в проверочном и непроверенном исключении см. Исправленное и непроверенное исключение
"throws" используется в сигнатуре метода, чтобы сообщить "родительский метод/метод, который вызывает эту функцию", чтобы эта функция "могла" генерировать исключение, а "родительский" метод/вызывающий должен ее обработать. И да, как это делает @maroun Maroun, "в текущем случае броски являются излишними"