169 похожих чатов

Привет.Подсобите с исключениями,читать лекции конечно круто,но только дело доходит до

практики,ну вы поняли...дело вот в чем
https://pastebin.com/8WZ1EDPQ - ссылка на мой код)
Строка 26 метод methodThrowExceptions() в сигнатеру 3 исключения,я такой говорю что в процессе выполнения данного метода возможно одно из этих исключения,так что прошу тебя,программа,не накройся медным тазом,и если одно из этих исключений возникнет,просто пробрось его дальше,в надежде на то,что я его в дальшейшем обработаю в catch(); Я верно выразился?)
и дальше в самом теле метода пишу это масленное масло,да?
как бы если первое условие бросай первой исключение,если второе соответсвенное 2е исключение ну и про 3ее тоже самое,но б****ь зачем,я же в сигнатуре уже это прописал,это тупо показательно да????
я же все правильно понял?)

31 ответов

9 просмотров

Чего? В сигнатуре метода не может быть исключений

Что такое стек знаете? Формулировка с ними если переписать будет похожа на правду

Что не понятного?

Escapewithme-Шумбасов Автор вопроса

я же не просил отвечать вопросом на вопрос)

так, а каким образом из сигнатуры метода должно сгенирироваться тело?) Ну тип, я написал в сигнатуре, что метод выкидывает эти эксепшены, а вот в каких именно случаях он че выкидывает, не написал Возможно ты имел в виду, зачем в сигнатуре указывать эксепшены, которые может выкинуть метод? Ну по факту ты предупреждаешь чувака(или будущего себя), который будет использовать метод, что вот нужно обработать такие вот исключительные ситуации

Дак ты не можешь нормально описать вопрос

Когда ты в сигнатуре метода пишешь исключение, ты лишь предупреждаешь, что метод может выбросить это исключение. Это предупреждение не самой Джаве, а тому челу, который этот метод бдует использовать.

Почему сигнатура метода не может содержать исключения

throws is as much a part of the method API as the name and the parameters. Clients know if they call that method, they need to handle that exception--by simply throwing it also or by catching it and handling it (which may in fact entail the throwing of another exception wrapping the original). throws is addressed at compile time.

Потому что сигнатура метода -это его название и параметры, а возвращаемое значение и лист ексепшнов в это понятие не входят

Ты обязвааешь вызывающий код обработать данное исключение

Escapewithme-Шумбасов Автор вопроса

что логично,т.к я не очень понимаю правильно ли я понимаю вообще что пишу

https://docs.oracle.com/javase/tutorial/java/javaOO/methods.html

Escapewithme-Шумбасов Автор вопроса

но прописав это программа как выдаст ошибку же не накроется?

Если нет обработчика - то накроется

Это если екзеп чекед

Escapewithme-Шумбасов Автор вопроса

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

Вот как раз в объявлении метода исключения входят однозначно, про сигнатуру согласен однако все равно залезть в java language specifications не помешает

В декларацию метода, да, в сигнатуру нет

Escapewithme-Шумбасов Автор вопроса

а,хм,окей,не сигнатура,ну список исключений после сигнатуры,так правильно?)

Ты это делаешь, чтобы показать, что ты пробрасываешь эксепшены выше по стеку и снаружи их надо обработать

Откройте java language specifications и прочитайте это проще чем кажется

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

Escapewithme-Шумбасов Автор вопроса

но под капотом ничего не меняется получается,если я пропишу throws или же не пропишу??

Эм, а как можно вызвать метод который выбрасывает проверяемое исключение без его обработки?

Под капотом чего?

Выкинуть исключение без описания его в throws - можно

Escapewithme-Шумбасов Автор вопроса

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

Если исключение чекед - то на этапе компиляции. Если анчекед - то тогда, когда экзеп долетит по стеку до jvm

Escapewithme-Шумбасов Автор вопроса

во)теперь понял)спс

Похожие вопросы

Обсуждают сегодня

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Заметил в ghci 9.4.8: > :t (<*>) @((->)_) (<*>) @((->)_) :: (w -> (a -> b)) -> (w -> a) -> w -> b Разве не должно (w -> (a -> b)) быть записано как (w -> a -> b)? Это баг, ил...
Михаил
13
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Any electron dev here?
Sayanth Tezro
12
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
так это может кто что знает или использует что-то как макбук только не макбук? на 13…14 дюймов
Michael
9
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
Карта сайта