![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обработка ошибок(Исключений) [D7]
ElectriC © (2007-03-07 15:18:00)Есть исходный текст:
try
Line[1]
Line[2]
Line[3]
Line[4]
except
on Ошибка do
end;
Предположим что при выполнении строки Line[2] произошла ошибка,
тогда программа не будет выполнять строки Line[3], Line[4].
Как сделать так, чтобы когда происходила на строке, допустим, Line[2], программа могла обработать
ошибку и вернуться к выполнению строки Line[3], Line[4]...?
Anatoly Podgoretsky (2007-03-07 20:14:00) [1]> ElectriC (07.03.2007 16:57:10) [10]
> Строки, содержащие ошибки, лучше сразу удалить.
> А если они нужны для работы программы?
Строки с ошибками не нужны для работы программы!
ElectriC (2007-03-07 17:51:00) [2]Лана! Закрыли эту тему: про васик и про Borland и про try...except...end!))))))))))))))))
P.S.
> может борланд попросить? Написать им мол "теряете ценного
> клиента, срочно вводите фичу"или писать на васике?
Лучше CodeGear!)))
clickmaker (2007-03-07 17:43:00) [3]
> [18] ElectriC © (07.03.07 17:41)
> ДА!
может борланд попросить? Написать им мол "теряете ценного клиента, срочно вводите фичу"
или писать на васике?
ElectriC (2007-03-07 17:42:00) [4]Thanks, Leonid Troyanovsky!
ElectriC (2007-03-07 17:41:00) [5]
> Т.е. ты желаешь видеть в Делфи некий механизм обработки
> ошибок а-ля васиковый On Error Resume Next ?
ДА!
ElectriC (2007-03-07 17:39:00) [6]Удалено модератором
Сергей М. (2007-03-07 17:16:00) [7]
> ElectriC
Т.е. ты желаешь видеть в Делфи некий механизм обработки ошибок а-ля васиковый On Error Resume Next ?
Плохиш (2007-03-07 17:11:00) [8]
> Толкового ничего не мог написать?
Толковое уже было написано, но индивидумам без логики оно не помогло...
Leonid Troyanovsky (2007-03-07 17:11:00) [9]
> ElectriC © (07.03.07 16:57) [10]
> Строки, содержащие ошибки, лучше сразу удалить.
> А если они нужны для работы программы?
Сомневаюсь, что проект нуждается в строках, содержащих ошибки :)
Ну, ладно, так и быть скажу.
На самом деле, за line1..lineN должны стоять вызовы процедур,
каждая из которых включает блок try..except.. end, обученный
справляться с исключениями определенного рода.
Т.е., если обработчик встретил знакомое исключение, и знает,
как с ним справиться без ущерба для дальнейшего выполнения,
то он молча его обрабатывает.
Если встретилось незнакомое исключение - оно пропускается, а
если возникшее исключение известно обработчику как недопустимое
для дальнейшего выполнения, то в обработчике делается reraise
(к начальному исключению добавляется префикс этого обработчика).
Вот, собс-но, примерно так.
--
Regards, LVT.
ElectriC (2007-03-07 17:07:00) [10]Удалено модератором
Плохиш (2007-03-07 17:04:00) [11]
> Строки, содержащие ошибки, лучше сразу удалить.
> А если они нужны для работы программы?
Рыдал...
Ещё один сантехник в прогеры подался...
nigga (2007-03-07 17:03:00) [12]Если выполнения последующих строк не зависит от результата выполнения предидущих, то оборачивать каждую в try..except, и это не загромождение кода.
ElectriC (2007-03-07 16:57:00) [13]
Строки, содержащие ошибки, лучше сразу удалить.
А если они нужны для работы программы?
NiGGa[lHbs] (2007-03-07 16:55:00) [14]Ну еще есть парочка вариантов:
1: зделать так, что бы Line[3] и Line[4] не содержали ошибок, и никаких компромисов или "возможно"
2: реализовать интерпретацию с оборачиванием в try..except
3: свой вариант
Leonid Troyanovsky (2007-03-07 16:54:00) [15]
> ElectriC © (07.03.07 16:51) [6]
> А если Line[3] и Line[4]..., возможно, могут содержать ошибки?
Строки, содержащие ошибки, лучше сразу удалить.
--
Regards, LVT.
clickmaker (2007-03-07 16:52:00) [16]в цикл вошли?
ElectriC (2007-03-07 16:51:00) [17]А если Line[3] и Line[4]..., возможно, могут содержать ошибки?
NiGGa[lHbs] (2007-03-07 16:48:00) [18]тогда не оборачивай все в try..except
ElectriC (2007-03-07 16:42:00) [19]А если этих строк штук 50? Не хочется загромождать код!
Плохиш (2007-03-07 16:40:00) [20]
> ElectriC © (07.03.07 16:38) [2]
А догадаться, что каждую строку нужно обернуть в try..except так трудно?