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

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

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

31 ответов

24 просмотра

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

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

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

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-Шумбасов Автор вопроса

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

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта