|
|
|
новичок
      
участник
Last Login: 25.04.2001 3:37
Сообщ.: 9,
Visits: 100
|
|
Помогите разобраться. С catch и try все понятно, а вот с throw нет.
Скажите, где можно инфу посмотреть нормальную, все перерыл. Или пришлите мне простой понятный пример. Заранее благодарю.
secret2k@mail.ru
|
|
|
|
|
Supreme 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;
}
Если непонятно скажите постараюсь объяснить попроще
|
|
|
|
|
новичок
      
участник
Last Login: 25.04.2001 3:37
Сообщ.: 9,
Visits: 100
|
|
Спасибо mishgun...
Неужели я такой тупой...все равно непонятно, сорри...
1) зачем в конце CATCH идет throw ex?
2) "а вот throw вы используете когда вызываете констрактор этого Exception
throw new ArithmeticException("за пределами размера")." - это понятно, а что потом происходит в проге?
вообще ничего не пойму что-то, везде был.
По определению, throw - для создания своих exceptions.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 24.03.2002 17:21
Сообщ.: 230,
Visits: 2 564
|
|
> throw - для создания собственных exceptions.
Не совсем так. throw именно *_выбрасывает_* исключение (точнее -- экземпляр класса, производного от Throwable). Создать этот экземпляр можно совешенно в другом месте (при этом, правда, снимок стека будет другой... но это детали)
А что при этом происходит -- довольно обширный вопрос... Хотелось бы уточнить: вы не понимаете механизма исключений вообще, или же его реализацию в Джаве? (Честно говоря, не хочется объяснять ни того, ни другого... Типичный случай, когда есть желание отделаться коротким "RTFM"...)
В качестве FM могу рекомендовать: К.Арнольдс, Дж. Гослинг, "Язык программирования Java", изд-во Питер, Санкт-Петербург, 1997... (просто единственная оказавшаяся под рукой книжка...)
|
|
|
|
|
Supreme 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}
|
|
|
|
|
новичок
      
участник
Last Login: 25.04.2001 3:37
Сообщ.: 9,
Visits: 100
|
|
Спасибо всем, кто откликнулся...Я разобрался...
Сделал первую свою программу в ява- так называемый простенький DIARY (Дневник). Даже уже 3 upgrade сделал. :))
|
|
|
|
|
Supreme 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, и, соответственно, не требуют обязательной ловли в вызывающем коде... что иногда напрягает. Вот.
|
|
|
|