Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];

Вниз

try/except   Найти похожие ветки 

 
Zheks   (2004-01-28 09:44) [0]

Народ, научите пользоваться этим зверем, совет, простенький пример, путёвая ссылочка и ваш бесценное участие мне помогут.


 
Digitman   (2004-01-28 09:51) [1]


> путёвая ссылочка


прочитанная тобой (ой ли ?) тема "Try...except statements" в стандартном хэлпе к Делфи, надо понимать, никак тебя не устраивает ?


 
хз   (2004-01-28 09:59) [2]

2 Digitman

> прочитанная тобой

Видимо, автор ветки хотел сказать это: "Я такой ленивый, что мне было даже лень нажать F1 и ввести в строку поиска пару слов".

По теме (раз уж мы такие ленивые):

Try
{Код, который надо обработать}
Except
On Exception Do
{Что нужно сделать при ошибке}
End;


 
Zheks   (2004-01-28 10:01) [3]

я конечно пользуюсь этой конструкцией, но без особого понимания гибкости такого подхода.

to [1]: Глянул я туда, там хорошооо...
а совет, простенький пример, путёвая ссылочка и ваше бесценное участие мне помогут?


 
Digitman   (2004-01-28 10:03) [4]


> но без особого понимания гибкости такого подхода


подход действительно гибкий и изящный


> Глянул я туда, там хорошооо


так в чем же дело ? в чем проблема ?


 
Zheks   (2004-01-28 10:08) [5]

to [2]: так что, при возникновении любой исключительной ситуации в блоке между (try & except) в (On Exception Do) прописывается свой обработчик? А можно ли между (On & Do) конкретизировать, какого рода ошибка?


 
хз   (2004-01-28 10:08) [6]

> а совет, простенький пример, путёвая ссылочка и ваше бесценное > участие мне помогут?

Сложный вопрос =) См. [2] и спрашивай, что конкретно не понятно.


 
хз   (2004-01-28 10:10) [7]

2 Zheks

> А можно ли между (On & Do) конкретизировать, какого рода
> ошибка?

Естесственно.

On Класс_Ошибки Do


 
Zheks   (2004-01-28 10:13) [8]

to хз: о, вижу, можно... а гдеб достать спиок ошибок типа (EZeroDivide exception is raised when an application attempts to divide a floating-point value by zero), тока желательно на русском?


 
Digitman   (2004-01-28 10:15) [9]


> Zheks © (28.01.04 10:08) [5]



> при возникновении любой исключительной ситуации


смотря что ты подразумеваешь под "исключительной ситуацией"

например, WinAPI-ф-ции могут возвращать результат, который можно с некоторой натяжкой назвать "исключительной ситуацией", но такие ситуации не возбуждают исключений, перехватываемых блоком try..except


 
Digitman   (2004-01-28 10:21) [10]


> а гдеб достать спиок ошибок типа


нет такого списка
но есть базовые стандартные классы RTL-исключений, о чем сказано в том же хэлпе :

The runtime library"s exceptions are defined in the SysUtils unit, and they all descend from a generic exception-object type called Exception. Exception provides the string for the message that RTL exceptions display by default.
There are several kinds of exceptions raised by the RTL, as described in the following table.

Error type Cause Meaning
Input/output Error accessing a file or I/O device Most I/O exceptions are related to error codes returned by Windows when accessing a file.
Heap Error using dynamic memory Heap errors can occur when there is insufficient memory available, or when an application disposes of a pointer that points outside the heap.
Integer math Illegal operation on integer-type expressions Errors include division by zero, numbers or expressions out of range, and overflows.
Floating-point math Illegal operation on real-type expressions Floating-point errors can come from either a hardware coprocessor or the software emulator. Errors include invalid instructions, division by zero, and overflow or underflow.
Typecast Invalid typecasting with the as operator Objects can only be typecast to compatible types.
Conversion Invalid type conversion Type-conversion functions such as IntToStr, StrToInt, and StrToFloat raise conversion exceptions when the parameter cannot be converted to the desired type.
Hardware System condition Hardware exceptions indicate that either the processor or the user generated some kind of error condition or interruption, such as an access violation, stack overflow, or keyboard interrupt.
Variant Illegal type coercion Errors can occur when referring to variants in expressions where the variant cannot be coerced into a compatible type.

For a list of the RTL exception types, see the SysUtils unit.


 
Digitman   (2004-01-28 10:23) [11]

EHeapException = class(Exception)
private
AllowFree: Boolean;
public
procedure FreeInstance; override;
end;

EOutOfMemory = class(EHeapException);

EInOutError = class(Exception)
public
ErrorCode: Integer;
end;

EExternal = class(Exception)
public
ExceptionRecord: PExceptionRecord;
end;

EExternalException = class(EExternal);

EIntError = class(EExternal);
EDivByZero = class(EIntError);
ERangeError = class(EIntError);
EIntOverflow = class(EIntError);

EMathError = class(EExternal);
EInvalidOp = class(EMathError);
EZeroDivide = class(EMathError);
EOverflow = class(EMathError);
EUnderflow = class(EMathError);

EInvalidPointer = class(EHeapException);

EInvalidCast = class(Exception);

EConvertError = class(Exception);

EAccessViolation = class(EExternal);
EPrivilege = class(EExternal);
EStackOverflow = class(EExternal);
EControlC = class(EExternal);

EVariantError = class(Exception);

EPropReadOnly = class(Exception);
EPropWriteOnly = class(Exception);

EAssertionFailed = class(Exception);

EAbstractError = class(Exception);

EIntfCastError = class(Exception);

EInvalidContainer = class(Exception);
EInvalidInsert = class(Exception);

EPackageError = class(Exception);

EWin32Error = class(Exception)
public
ErrorCode: DWORD;
end;

ESafecallException = class(Exception);


 
хз   (2004-01-28 10:24) [12]

> а гдеб достать спиок ошибок типа

Тут все просто. Когда возникает ошибка, тебе выдается окошко, в котором написано что-то, а в добавок и класс произошедшей исключительной ситуации. Мысль понятна?


 
хз   (2004-01-28 10:26) [13]

2 Digitman [11]

Ему скорее их описание нужно, хотя я не телепат.


 
Zheks   (2004-01-28 10:34) [14]

to хз, Digitman: ваши советы, простенькие примеры, путёвые ссылочки и ваше бесценное участие мне помогли. Спасибо.


 
Digitman   (2004-01-28 10:35) [15]


> Zheks © (28.01.04 10:13) [8]


ну вот работаешь ты, предположим, с объектом класса TStringList, вызывая его метод Add()

этот метод при определенных условиях может возбудить некие исключения

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

опять же - лезешь в хэлп (он для того и поставляется !), ищешь описение метода TStringList.Add и внимательно читаешь его, находя искомое :

Note: For sorted lists, Add will raise an EListError exception if the string S already appears in the list and Duplicates is set to dupError. If Duplicates is set to dupIgnore, trying to add a duplicate string to a sorted list does nothing.

как видишь, информация как минимум об одном из возможных исключений - у тебя перед глазами


 
Digitman   (2004-01-28 10:37) [16]


> описение


)) ... это я сильно сказанул !)


 
pasha_golub   (2004-01-28 10:39) [17]

Digitman © (28.01.04 10:37) [16]
Зато по делу :-)


 
Digitman   (2004-01-28 10:49) [18]


> pasha_golub © (28.01.04 10:39) [17]


ну дык !)

p.s.

помню, когда я был маленьким и ходил вприпрыжку с азбукой под мышкой в ликбез, некий препод, ведший у нас одновременно и лабы по предмету, на лабах в ответ на идиотские и бездумные вопросы нас, буратин нетесаных, всегда отвечал односложно (и на удивление точно !) : "Ну читайте же, олухи, методичку ! В ней ВСЕ написано !"


 
Alexander666   (2004-01-28 11:20) [19]

Читай у Рихтера первую главу :-), там есть ссылка на модуль с ошибками (правда на С это все дело). Но как он сам говорит, их там видимо не видимо, да к тому же не все :-).



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.042 c
1-16329
CyberFreak
2004-01-24 22:23
2004.02.06
Incompatible types: regular procedure and method pointer


11-16206
BaRToV
2003-05-21 01:45
2004.02.06
TaskBar


3-16077
Леонид
2004-01-10 01:41
2004.02.06
Поиск одинаковых фрагментов текста в БД


14-16594
euru
2003-12-24 14:30
2004.02.06
Шаблоны и перегрузка операторов


14-16650
Кукушкинд
2004-01-13 14:08
2004.02.06
Друзья! Есть





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский