Вопрос про throw в java
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Вопрос про throw в java Expand / Collapse
Автор
Сообщение
25.04.2001 3:38
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 25.04.2001 3:37
Сообщ.: 9, Visits: 100
Помогите разобраться. С catch и try все понятно, а вот с throw нет.

Скажите, где можно инфу посмотреть нормальную, все перерыл. Или пришлите мне простой понятный пример. Заранее благодарю.
secret2k@mail.ru
Сообщ. #708427
25.04.2001 4:47
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

модератор
Last Login: 10.03.2008 23:02
Сообщ.: 2 077, Visits: 21 402
А на java.sun.com был?
throws используется чтобы throw Exceptoin для всего body метода чтобы не определять try-catch просто пишетe
public void myMethod throws SQLException
а вот throw вы используете когда вызываете констрактор этого Exception
throw new ArithmeticException("за пределами размера").
или когда вам нужно поймать Exception проследовать дальше и затем опять поймать его.
try{
readData("Text.txt");
}
catch{
(FileNotFoundException ex){
System.out.print.ln("Exception!!!!");
throw ex;
}
Если непонятно скажите постараюсь объяснить попроще
Сообщ. #708429
26.04.2001 1:15
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 25.04.2001 3:37
Сообщ.: 9, Visits: 100
Спасибо mishgun...
Неужели я такой тупой...все равно непонятно, сорри...
1) зачем в конце CATCH идет throw ex?
2) "а вот throw вы используете когда вызываете констрактор этого Exception
throw new ArithmeticException("за пределами размера")." - это понятно, а что потом происходит в проге?
вообще ничего не пойму что-то, везде был.

По определению, throw - для создания своих exceptions.

Сообщ. #708471
27.04.2001 21:06
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 24.03.2002 17:21
Сообщ.: 230, Visits: 2 564
> throw - для создания собственных exceptions.

Не совсем так. throw именно *_выбрасывает_* исключение (точнее -- экземпляр класса, производного от Throwable). Создать этот экземпляр можно совешенно в другом месте (при этом, правда, снимок стека будет другой... но это детали)

А что при этом происходит -- довольно обширный вопрос... Хотелось бы уточнить: вы не понимаете механизма исключений вообще, или же его реализацию в Джаве? (Честно говоря, не хочется объяснять ни того, ни другого... Типичный случай, когда есть желание отделаться коротким "RTFM"...)

В качестве FM могу рекомендовать: К.Арнольдс, Дж. Гослинг, "Язык программирования Java", изд-во Питер, Санкт-Петербург, 1997... (просто единственная оказавшаяся под рукой книжка...)
Сообщ. #708637
19.05.2001 0:24


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 26.06.2006 6:00
Сообщ.: 374, Visits: 4 116
throw Exception
нужно для того что бы ты с своей программе всех послать
подальше. Например вызал кто то процедурку которую ты
написал и всунул ей параметр который ни в какие ворота
нелезет а ты ему вместо того что бы код ошибки передавать
создаёшь объект исключение или другими словами внештатная ситуация твоя процедура на данный момент прерывается а тот метод который твою процедуру вызывал получает от системы сообщение при вызове такой то процедуры произошла внештатная ситуация такого го то типа и этот метод переходит в раздел после оператора catch и начинает рзбираться что там произошло. Вот тебе пример
int Devide10(int i) throws Exception //Возможна внештатная //ситуация
{ if (i ==0) {throw new Exception ('Кривой параметр')};
else return 10/i}
Сообщ. #710275
20.05.2001 9:33
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 25.04.2001 3:37
Сообщ.: 9, Visits: 100
Спасибо всем, кто откликнулся...Я разобрался...
Сделал первую свою программу в ява- так называемый простенький DIARY (Дневник). Даже уже 3 upgrade сделал. :))
Сообщ. #710302
21.05.2001 11:43
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 24.03.2002 17:21
Сообщ.: 230, Visits: 2 564
> int Devide10(int i) throws Exception
> { ... throw new Exception(...); .....}

Это как бы не есть очень хорошо: если кидать Exception, компилятор не будет отслеживать наличие блоков catch в вызывающих функциях... В результате может получиться, что сугубо внутрення мелкая ошибка будет подниматься по стеку до самой main()...

Кстати, если я правильно ошибаюсь, все исключения, объявленные в java.lang, не требуют объявления в throws, и, соответственно, не требуют обязательной ловли в вызывающем коде... что иногда напрягает. Вот.
Сообщ. #710382
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, mishgun, pl

Время GMT +3:00, Сейчас 9:20