Обработка
исключительных ситуаций
Чтобы сделать свое приложение
устойчивым к ошибкам, вам необходимо распознать исключение и обработать его.
Если вы не напишете обработчик исключения, приложение отобразит окно
сообщения об ошибке.
Обработчик исключения
— это программа, которая начинает свое выполнение в случае возникновения
определенной исключительной ситуации. Обработник
исключения выполняется вместо стандартной реакции приложения на ошибку.
При обработке исключительных
ситуаций Kylix работает с так называемыми объектами исключений. Так как
Kylix — объектно-ориентированная среда программирования, то логично, что и исключительная
ситуация — тоже объект. Для работы с этим объектом в Kylix присутствуют специальные
языковые конструкции, которые мы и рассмотрим далее.
Программисту чаще всего
известно, в каком именно месте программы может возникнуть исключительная ситуация
(например, место, где происходит открытие файла, расположенного на диске). Для
того чтобы обработать ее, нужно этот кусок кода защитить. Таким образом, данный
блок кода будет называться защищенным.
Рассмотрим языковые конструкции,
предоставляемые средой Kylix, которые обеспечивают защищенный код.
Первая конструкция имеет
вид, представленный в листинге 9.1.
Листинг 9.1. Синтаксис
конструкции try...except
try
// здесь находятся операторы защищенного кода
except
on Exception1 do // операторы, выполняемые в случае
// возникновения ошибки 1
on Exception2 do // операторы, выполняемые в случае // возникновения ошибки 2
. . .else
// операторы, выполняемые в случае возникновения ошибки, не являющейся ни ошибкой 1
//ни ошибкой 2 end;
Таким образом, вы размещаете
"опасный" участок кода после слова try
, и если при выполнении
этого кода произойдет исключительная ситуация, оно прекратится и начнут выполняться
команды, расположенные после слова except
.
В разделе except
могут находиться или только операторы обработки исключений, которые начинаются
со слова-приставки on
, или только произвольные операторы,
не являющиеся операторами обработки исключений. В вышеприведенном листинге представлена
ситуация, когда в разделе except
находятся только операторы обработки
исключений. Если в блоке операторов,
расположенных после слова try
, произошла ошибка Exception1
,
то будут выполнены только те команды, которые расположены после слов on
Exception1 do
. Далее объект исключения уничтожается и программа продолжает
выполнять операторы, расположенные после слова end
; рассматриваемой
конструкции.
Раздел после слова else
является необязательным и может отсутствовать. Он предназначен для обработки
любых других исключений, не предусмотренных в разделе except
. Если
же раздел else
отсутствует, но в защищенном коде произошла исключительная
ситуация, не предусмотренная ни одним обработчиком исключений on Exception
do
, то произойдет стандартная (определенная операционной системой) обработка
данной исключительной ситуации с появлением соответствующего информационного
окна с сообщением об ошибке.
Рассмотрим оператор обработки
исключений более подробно. Как видно из листинга 9.1, данный оператор может
присутствовать внутри раздела except
или принимать одну из двух
форм:
on <класс исключения>
do <оператор>;
или
on <имя>:
<класс исключения>
do // операторы, в которых можно использовать свойства исключения
В листинге 9.1 мы привели
только первую форму представления оператора. Но, так как исключение является
объектом, то было бы иногда очень удобно обратиться к его свойствам. Однако
для того, чтобы обращаться к свойствам какого-либо объекта, необходимо знать
его имя. Вторая форма оператора обработки исключений применяется именно тогда,
когда нам нужно обратиться к свойствам возникшего исключения. Для этого исключению
присваивается временное имя <имя>
и к его свойствам можно
обращаться через точку:
<имя>.<свойство>
В листинге 9.2 приведена
та же конструкция, что и в листинге 9.1, только в блоке except
нет операторов обработки исключений. Таким образом, при возникновении любой
исключительной ситуации в защищенном блоке будут выполняться операторы, расположенные
после слова except
.
Листинг 9.2. Конструкция
try...except
без операторов обработки исключений
try
// здесь находятся операторы защищенного кода
except
Operator1; // операторы, выполняемые в случае
Operator2; // возникновения любой исключительной ситуации, Operator3; // возникшей в защищенной области
...
end;
Приведем небольшие примеры
использования защищенных блоков программы. В листинге 9.3 представлен пример
обработки исключительной ситуации деления на ноль.
Листинг 9.3.Обработка
деления на ноль
try
а:=8;
b:=0;
с:=а/b; except
on EZeroDivide do MessageBox{'Внимание! Деление на ноль!') end;
При выполнении данного
кода будет сгенерирована исключительная ситуация, принадлежащая к классу EZeroDivide
(деление целых чисел на ноль). Данная исключительная ситуация обработается в
секции except и приложение выдаст на экран окно с сообщением Внимание! Деление
на ноль! (рис. 9.1).
Рис.
9.1. Окно сообщения
Примечание
Знание имен классов исключений необходимо при обработке исключительных ситуаций. Мы рассмотрим их далее в этой главе.
В листинге 9.4 приведен
пример использования временного имени объекта исключения в своих целях.
Листинг 9.4. Использование
временного имени объекта ислючения
try
ScrollBar1.Max:=ScrollBar.Min-1; except
on E: EInvalidOperation do
MessageDlg('Произошло исключение: '+Е.Message, mtlnformation, [mbOK],0)
end;
В защищенном блоке кода
программы будет осуществлена недопустимая для объекта ScrollBox1
операция присвоения максимального значения списка меньшего, чем минимальное
значение. Возникнет исключение класса EInvalidOperation
. Таким
образом, мы присваиваем объекту исключения, принадлежащего к классу EinvalidOperation
,
временное имя Е
, после чего можем обращаться к свойствам объекта
исключения Е
. Мы самостоятельно выводим в окне сообщения текст
ошибки Е.Message
, который выдается по умолчанию (в том случае,
если бы нашего обработчика исключения не было). Результат работы кода листинга
9.4. представлен на рис. 9.2.
Рис.
9.2. Окно сообщения об исключении
Примечание
С объектами исключений нужно работать очень осторожно. Ни в коем случае самостоятельно не уничтожайте объекты исключения — это может привести к ошибке работы программы. После завершения обработки исключения Kylix самостоятельно позаботится об его уничтожении.
Рассмотрим теперь классы
исключений. Они необходимы для обработки конкретных исключительных ситуаций.
Мы представляем классы исключений не в иерархии, а в алфавитном порядке.
Exception
— базовый класс исключений. Все другие классы исключений являются прямыми
или косвенными потомками данного класса.EAbort
—
потомок класса Exception
. Данный класс исключения не отображает
диалогового окна ошибки при возникновении исключения. Простейшим способом
генерации данного исключения является вызов метода Abort
.EAbstarctError
— потомок класса Exception
. Генерируется при попытке вызова абстрактного
метода.EAccessViolation
— потомок класса EExternal
. Генерируется при неверной работе
с памятью.EAssertionFailed
— потомок класса Exception
. Класс исключения, генерируемый в
случае ошибки при проверке истинности с помощью процедуры Assert. Данное исключение
возникает, только если включена директива компилятора Kylix $ASSERTION
ON
.EBcdException
— потомок класса Exception
. Базовый класс при работе со значениями
типа BCD
(Binary code decimal). Генерируется обычно в случае
ошибки при попытке преобразования типа Variant
или String
в BCD
.EBcdOverflowException
— потомок класса EBcdException
. Генерируется при невозможности
преобразования типа Variant
в BCD
с требуемым количеством
символов после запятой.EBitsError
— потомок класса Exception
. Генерируется при ошибке доступа к
массиву булевых значений.EClassNotFound
— потомок класса EFilerError
. Генерируется при невозможности
найти определенный компонент при чтении из потока.EComponentError
— потомок класса Exception
. Возникает при ошибке регистрации
или переименования компонента.EConvertError
— потомок класса Exception
. Генерируется при ошибке преобразования
строк или объектов.EDatabaseError
— потомок класса Exception
. Базовый класс для всех ошибок
при работе с базами данных.ECommonCalendarError
. Возникает при неправильном
вводе даты или времени пользователем в компонент TdateTimePicker
.EDbcClient
—
потомок класса EDatabaseError
. Генерируется в случае ошибки при
работе с набором данных клиента базы данных.EDBEditError
— потомок класса Exception
. Возникает в случае попытки помещения
данных в поле, которые не являются совместимыми с заданной маской поля.EDivByZero
— потомок класса EIntError
. Возникает при ошибке целочисленного
деления на ноль. При делении на ноль чисел с плавающей запятой возникает другое
исключение EZeroDivide
(см. ниже).EDSWriter
— потомок класса Exception
. Ошибка при попытке создания пакета
данных из набора данных.EExternal
—
потомок класса Exception
. Базовый класс для всех ошибок, происходящих
вне приложения во время его выполнения.EExternalException
— потомок класса EExternal
. Исключение с нераспознаваемым кодом.EFCreateError
— потомок класса EStreamError
. Неудачная попытка создания нового
файла. Например, неправильное имя файла или если файл с таким именем уже существует.EFilerError
—
потомок класса EStreamError
. Попытка повторной регистрации класса.EFOpenError
—
потомок класса EStreamError
. Невозможно открыть требуемый файл.
Файл не найден или не существует заданного пути к файлу.EHandleComponentException
— потомок класса Exception
. Невозможно получить
дескриптор окна.EHeapException
— потомок класса Exception
. Класс исключения для ошибок,
связанных с кучами распределения памяти.EIdAcceptWaitCannotBeModifiedWhileServerlsActive
— потомок класса EIdTCPServerError
.Возникает, когда свойство
TIdTCPServer.AcceptWait
изменяет
свое значение при активном TCP-сервере.EIdAlreadyConnected
— потомок класса EIdException
. Попытка создать соединение
с компонентом Indy, когда оно уже существует.EIdCanNotChangeTarget
— потомок класса EIdException
. Попытка установки
свойства TIdLogDebug
. Target
в то время, когда свойство
TIdLogDebug.Active
имеет значение true.
EldCanNotCreateMessagePart
— потомок класса EldMessageException
. Ошибка вызова конструктора
класса TIdMessagePart
.EIdClosedSocket
— потомок класса EIdException
. Попытка записи в закрытый ТСР-сокет.EIdConnClosedGracefully
— потомок класса EIdSilentException
. Возникает
в случае успешного закрытия соединения.EIdCorruptServicesFile
— потомок класса EIdException
. Поврежден один
из файлов SERVICES. Данные файлы располагаются на диске в разных местах, в
зависимости от операционной системы:EIdCouldNotBindSocked
— потомок класса EIdSockedHandleError
. Ошибка привязки
дескриптора сокета.EIdDnsResolverError
— потомок класса EIdException
. Ошибка класса TIdDnsResolver
.EIdTunnelConnectToMasterFailed
— пототмок класса EIdTunnelException
. Данное исключение генерируется
автоматически при ошибке туннельного соединения.EIdException
— потомок класса Exception
. Базовый класс исключений для Indy-компонентов.
Компоненты Indy не используют стандартные исключения.EIdFailedToRetreiveTimeZoneInfo
— потомок класса EIdException
. Данные о временной зоне не могут
быть получены текущим пользователем системы. EIdFTPFileAlreadyExists
— потомок класса EidException
. Файл не может
быть перезаписан с помощью запроса FTP Get
.EIdHTTPCannotSwitchSessionStateWhenActive
— потомок класса EIdHTTPServerError
. Невозможно изменить
состояние активного HTTP-сервера.EIdHTTPErrorParsingCommand
— потомок класса EIdHTTPServerError
. Неизвестная HTTP-команда.EIdHTTPHeaderAlreadyWritten
— потомок класса EIdHTTPServerError
.Заголовок
HTTP-документа уже существует.EIdHTTPServerError
— потомок класса EIdException
. Базовый класс для всех HTTP-исключений
в Indy.EIdHTTPUnsopportedAuthorisationScheme
— потомок класса EIdHTTPServerError
. Неподдерживаемый формат
имени пользователя и пароля для идентификации на HTTP-сервере.EIdIcmpException
— потомок класса EIdException
. Исключение для всех ICMP-компонентов.EIdInterceptPropInvalid
— потомок класса EIdTCPConnectionError
.Попытка
использования возможностей, не поддерживаемых текущим классом TIdConnectionIntercept
,
который ассоциирован со свойствомIntercept
.EIdInterceptPropIsNil
— потомок класса EIdTCPConnectionError
. Попытка установки
InterceptEnabled
в true
в то время, когда
Intercept
имеет значение Nil
.EIdInvalidServiceName
— потомок класса EIdException
. Неправильное имя сервиса.EIdInvalidSocked
— потомок класса EIdException
. Неожиданное закрытие соединения.EIdLoginException
— потомок класса EIdTelnetServerException
. Ошибка
при соединении с Telnet-сервером.EIdMaxLoginAttempt
— потомок класса EIdLoginException
. Исчерпан лимит подключений
к Telnet-серверу. Максимальное число подключений указывается в свойстве TIdTelnetServer.LoginAttempts
.EIdMessageException
— потомок класса EIdException
. Базовый класс для исключений Indy,
которые отображают сообщения об ошибке.EIdMoreThanOneTIdAntiFreeze
— потомок класса EIdException
. Попытка создания более одного
компонента TIdAntiFreeze
в вашем приложении. Приложению не требуется
больше одного такого компонента.EIdNNTPConnectionRefused
— потомок класса EIdProtocolReplyError
. Отказ соединения с NNTP-сервером.EIdNNTPException
— потомок класса EIdException
. Базовый класс всех NNTP-исключений. EIdNNTPNoOnNewGroupsList
— потомок класса EIdNNTPException
. Ошибка поиска
в новом списке Newsgroups.EIdNNTPNoOnNewNewsList
— потомок класса EIdNNTPException
. Ошибка поиска
в новом списке сообщений NNTP.EIdNNTPNoOnNewsgroupList
— потомок класса EIdNNTPException
. Ошибка поиска
в новом списке Newsgroups.EIdNNTPStringListNotInitialized
— потомок класса EIdNNTPException
. Неудачный
поиск сообщения,EIdNoBindingsSpecified
— потомок класса EIdUDPServerException
. Попытка UDP-сервера инициализировать
дескриптор сокета, но номер порта при этом не был задан.EIdNoDataToRead
— потомок класса EIdTCPConnectionError.
Попытка записи
с помощью вызова метода WriteStream
пустого потока Tstream.
EIdNoExecuteSpecified
— потомок класса EIdTCPConnectionError
. Heудачное выполнение
процесса, имеющего равный приоритет с вашим приложением.EIdNoOnAuthentication
— потомок класса EIdTelnetServerException
. У компонента
TIdTelnetserver
не определен обработчик события OnAuthentication
.EIdNotAHBytessent
— потомок класса EIdSocketHandleError.
Передача данных не завершена.
Были отправлены не все байты.EIdNotEnoughDataInBuffer
— потомок класса EIdTCPConnectionError
.Не достаточно
байтов во внутреннем буфере компонента TIdTCPConnection
.EIdObjectTypeNotSupported
— потомок класса EIdTCPConnectionError
. Не поддерживаемый
тип объекта TStream
или TStrings
.EIdOpenSSLError
— потомок класса EIdException
. Класс-предок для всех классов
исключений Open SSL.EIdOpenSSLLoadError
— потомок класса EIdOpenSSLError
. Базовый класс ошибок загрузки
библиотеки Open SSL.EIdOSSLAcceptError
— потомок класса EIdOpenSSLError
. Новое SSL-соединение не доступно.EIdOSSLConnectError
— потомок класса EIdOpenSSLError
. Ошибка SSL-соединения.EIdOSSLCouldNotLoadSSLLibrary
— потомок класса EIdOpenSSLLoadError
. Невозможно загрузить
библиотеку Open SSL.EIdOSSLCreatingContextError
— потомок класса EIdOpenSSLError.
Ошибка
преобразования содержания SSL после смены режима.EIdOSSLDataBindingError
— потомок класса EIdOpenSSLError.
Невозможна
привязка SSL-сокета.EIdOSSLGetMethodError
— потомок класса EIdOpenSSLError
. Компонент TIdSSLContext
содержит значение неверного режима.EIdOSSLLoadingCertError
— потомок класса EIdOpenSSLLoadError
.Файл-сертификат
не может быть загружен после смены значения свойства Mode
у компонента
TIdSSLContext.
EIdOSSLLoadingKeyError
— потомок класса EIdOpenSSLLoadError
. Ключевой
файл-сертификат не может быть загружен после смены значения свойства Mode
у компонента TIdSSLContext
.EIdOSSLLoadingRootCertError
— потомок класса EIdOpenSSLLoadError
.Корневой
файл-сертификат не может быть загружен после смены значения свойства Mode
у компонента TIdSSLContext.
EIdOSSLModeNotSet
— потомок класса EIdOpenSSLError.
He назначен режим контекста
SSL.EIdOSSLSettingCipherError
— потомок класса EIdOpenSSLError
. Ошибка установки схемы
шифрования SSL контекста после смены режима.EIdPackageSizeTooBig
— потомок класса EIdSocketHandleError
. Неправильный размер пакета.EIdProtocolReplyError
— потомок класса EIdException.
Ошибка протокола.EIdResponceError
— потомок класса EIdException
. Ошибка ожидаемого ответа.EIdSetSizeExceeded
— потомок класса EIdException.
Количество вызовов FD SET превысило
максимум, поддерживаемый операционной системой.EIdsilentException
— потомок класса EIdException
. Молчаливое исключение. Похоже
на Eabort
.EIdSockedError
— потомок класса EIdException
. Ошибка сокета.EIdSockedHandleError
— потомок класса EIdException
. Базовый класс для всех ошибок
дескрипторов сокетов.EIdSocksAutnError
— потомок класса EIdsocksError
. Ошибка идентификации пользователя
на Socks-прокси.EIdSocksAuthMetnodError
— потомок класса EIdSocksError
. Неправильный или неподдерживаемый
метод идентификации пользователя на Socks-прокси.EIdSocksError
— потомок класса EIdException
. Базовый класс исключений Socks
при использовании метода TIdTCPClientConnect
.EIdSocksRequestFailed
— потомок класса EIdSocksError
. Socks-прокси отклонил
или не распознал запрос от TCP-клиента.EIdSocksRequestIdentFailed
— потомок класса EIdSocksError.
Идентификатор пользователя, полученный
от TCP-клиента, не совпадает с идентификатором, представленным программой
Ident Daemon
, запущенной на компьютере пользователя.EIdSocksRequestServerFailed
— потомок класса EIdSocksError
. Socks-прокси не может
создать соединения, запрашиваемого TCP-клиентом.EIdSocksServerAddressError
— потомок класса EdSocksError.
Socks-прокси
не поддерживает тип адресации, который получен от TCP-клиента.EIdSocksServerCoimandError
— потомок класса EldSocksError
. Socks-прокси
не поддерживает команду, которая получена от TCP-клиента.EIdSocksServerConnectionRefusedError
— потомок класса EIdSocksError.
Соединение, запрашиваемое
TCP-сервером, было отклонено Socks-прокси.EIdSocksServerGeneralError
— потомок класса EIdSocksError
. Socks-прокси сообщает
об ошибке.EIdSocksServerHostUnreachableError
— потомок класса EIdSocksError
.Хост,
запрашиваемый TCP-клиентом, недоступен.EIdSocksServerNetUnreachableError
— потомок класса EIdSocksError
.Сеть
недоступна.EIdSocksServerPermissionError
— потомок класса EIdSocksError
. Запрашиваемое
соединение не поддерживается набором правил.EIdSocksServerRespondError
— потомок класса EIdSocksError
. Socks-прокси не отвечает на запросы
TCP-клиента.EIdSocksServerTTLExpiredError
— потомок класса EIdSocksError.
Хост не может быть
доступным, т. к. превышен TTL.EIdSocksUnknownError
— потомок класса EdSocksError
. Неизвестная ошибка.EIdStackCanNotLoadWinsock
— потомок класса EldException.
Невозможно получить данные
из сокета.EIdstackError
— потомок класса EIdException
. Базовый класс для ошибок стека
протокола Indy.EIdStackInitializationFailed
— потомок класса EIdStackError
. Ошибка
инициализации стека протокола.EIdStackSetSizeExceeded
— потомок класса EIdStackError
. Превышено максимально
возможное число дескрипторов сокетов.EIdTableNotFound
— потомок класса EIdException
. Неверное преобразование
символов с использованием кодовой таблицы.EIdTCPConnectionError
— потомок класса EIdException
. Базовый класс ошибок TCP-соединений.EIdTCPServerError
— потомок класса EIdException
. Базовый класс ошибок TCP-сервера.EIdTelnetClientConnectError
—потомок класса EIdTelnetError
. Ошибка соединения с Telnet-сервером.EIdTelnetError
— потомок класса EIdException
. Базовый класс ошибок Indy Telnet.EIdTelnetServerException
— потомок класса EIdException
. Базовый класс
ошибок Telnet-сервера.EIdTelnetServerOnDataAvailabielsNil
— потомок класса EIdTelnetError
. Неверная попытка выполнения
метода TIdTelnet.DoOnDataAvailable
.EIdTextInvalidCount
— потомок класса EIdMessageException
. Ошибка при создании
текстового сообщения.EIdTFTPAccessViolation
— потомок класса EIdTFTPException
. Доступ к FTP
запрещен. EIdTFTPAllocationExceeded
— потомок класса EIdTFTPException
. Превышение
распределений.EIdTFTPException
— потомок класса EIdException.
Базовый класс для исключений
Trivial FTP.EIdTFTPFileAlreadyExists
— потомок класса EIdTFTPException
. Попытка
создания уже существующего файла.EIdTFTPFileNotFound
— потомок класса EIdTFTPException
. Файл не найден. EIdTFTPIllegalOperation
— потомок класса EIdTFTPException
. Неправильная FTP-операция.EIdTFTPNoSuchUser
— потомок класса EIdTFTPException.
Ошибка проверки имени
пользователя и пароля.EIdTFTPOptionNegotiationFailed
— потомок класса EIdTFTPException.
Неверный выбор согласования
FTP.EIdTFTPUnknownTransferID
— потомок класса EIdTFTPException
. Нeизвестный
идентификатор передачи данных.EIdThreadClassNotSpecified
— является потомком класса EIdThreadMgrError
. Попытка создания
нового потока без указания имени класса.EIdThreadMgrError
— потомок класса EIdException
. Базовый класс для ошибок Indy
Thread Manager. EIdTunnelConnectToMasterFailed
— потомок класса EIdTunnelException
. Невозможно соединение подчиненного
и главного туннелей.EIdTunnelCRCFailed
— потомок класса EIdTunnelException
. Неверное вычисление
CRC.EIdTunnelCustomMessageInterpretationFailure
— потомок класса EIdTunnelException
.
Подчиненный поток получил сообщение неизвестного типа.EIdTunnelDontAllowConnections
— потомок класса EIdTunnelException
.Подчиненный
поток не может установить соединение.EIdTunnelException
— потомок класса EIdException
. Базовый класс для ошибок Indy
Tunnel.EIdTunnelInterpretationOfMessageFailed
— является потомком класса EIdTunnelException
. Ошибка интерпретации
сообщения от подчиненного потока.EIdTunnelMessageHandlingFailed
— является потомком класса EIdTunnelException
. Подчиненным потоком
получено неправильное сообщение.EIdTunnelMessageTypeRecognitionError
— является потомком класса EIdTunnelException
.
Неизвестный тип сообщения.EIdTunnelTransformError
— потомок класса EIdTunnelException
. Ошибка преобразования
данных при туннельном соединении.EIdTunnelTransformErrorBeforeSend
— является потомком класса EIdTunnelException
. Ошибка
преобразования данных до их отправки.EIdUDPException
— потомок класса EIdException
. Базовый класс для ошибок Indy
UDP.EIdUDPReceiveErrorZeroBytes
— потомок класса EIdUDPException
. Данные не были
получены при установленном соединении.EIdUDPServerException
— потомок класса EIdUDPException
. Базовый класс
для ошибок Indy UDP-сервер.EIniFileException
— потомок класса Exception.
Ошибка при работе с INI-файлами.EInOutError
— потомок класса Exception
. Ошибка ввода/вывода. Коды ошибок
ввода/вывода представлены в табл. 9.1. Таблица
9.1. Коды ошибок ввода/вывода
Linux |
Windows |
||
Код ошибки |
Описание |
Код ошибки |
Описание |
2
|
Нет файла или каталога
|
2 |
Файл не найден |
3 |
Путь
к файлу не найден |
||
5 |
Ошибка ввода/вывода |
5 |
Доступ запрещен |
13 |
Доступ запрещен |
|
|
20 |
Не является каталогом |
||
21 |
Является каталогом |
||
32 |
Ошибка совместного использования файла | ||
Ошибки,
не зависящие от операционной системы |
|||
Код
ошибки |
Описание |
||
|
100 |
Достигнут конец
файла |
|
|
101 |
Диск полон |
|
|
102 |
Файловая переменная
не назначена |
|
|
103 |
Файл не открыт |
|
|
104 |
Файл не открыт
для ввода |
|
|
105 |
Файл не открыт
для вывода |
|
|
106 |
Ошибка ввода по
формату |
|
|
107 |
Файл уже открыт |
EIntError
— потомок класса EExternal.
Базовый класс для целочисленных
математических ошибок.EIntfCastError
— потомок класса Exception
. Неверное использование
оператора as
.EIntoverfiow
— потомок класса EIntError
. Превышено максимальное значение
целого числа.EInvalidArgument
— потомок класса EMathError
. Аргумент математической функции
задан неправильно.EInvalidCast
— потомок класса Exception
. Неверное использование оператора
as
.EInvalidGraphic
— потомок класса Exception
. Нераспознаваемый графический
файл.EInvalidGraphicOperation
— потомок класса Exception
. Неверное использование графических
операций.EInvalidGridOperation
— потомок класса Exception
. Неверное использование сетки (Grid).EInvalidHandleException
.
Базовый класс для ошибок при оперировании объектами TFont, TPen
и Tbrush
. EInvalidlmage
— потомок класса EFilerError
. Невозможно прочитать файл
ресурсов.EInvalidOp
— потомок класса EMathError
. Неизвестная операция с плавающей
запятой.EInvalidOperation
— потомок класса Exception
. Неверное действие над компонентом. Примечание
Не путайте классы
исключений EInvalidOp и EInvalidOperation!
EinvalidParam
- базовый класс для неверных потоковых операций с ресурсами mime
.EInvalidPointer
— потомок класса EHeapException
. Неверная операция над
указателем.EMaskException
— потомок класса Exception
. Ошибка сравнения имени файла по маске.EMathError
— потомок класса EExternal
. Абстрактный класс исключений для
математических операций над вещественными числами.EMenuError
— потомок класса Exception
. Ошибка при работе с системным меню.EOutOfMemory
— потомок класса EHeapException
. Ошибка распределения памяти.EOutOfResources
— потомок класса EOutOfMemory
. Ошибка распределения дескрипторов
окон.EOverflow
— потомок класса EMathError
. Превышено максимально возможное
вещественное значение.EPackageError
— потомок класса Exception
. Ошибка загрузки или уничтожения пакета.EParserError
— потомок класса Exception
. Ошибка преобразования текста
в двоичную форму.EPrinter
— потомок класса Exception
. Ошибка вывода на печатающее устройство.EPrivilege
—
потомок класса EExternal
. Попытка выполнения инструкции процессора,
которая является недоступной при данном уровне привилегий процессора.EPropertyConvertError
— потомок класса Exception
. Ошибка установки или получения
значения свойства компонента. EPropertyError
— потомок класса Exception
. Ошибка при установке нового значения
свойства компонента.EQtDialogException
— потомок класса Exception
. Ошибка при работе с Qt-диалогом.ERangeError
— потомок класса EIntError
. Значение целочисленной переменной
превысило максимально возможное. EReadError
— потомок класса EFilerError
. Ошибка чтения данных из потока.EReconcileError
— потомок класса EDBClient
. Ошибка обновления набора данных клиента.ERegisterActionsException
— потомок класса Exception
. He произведена
инициализация регистрации системы.EResNotFound
— потомок класса Exception
. Ошибка работы с файлами ресурсов.ESafecallException
— потомок класса Exception
. Ошибка при выполнении
безопасного вызова процедуры.ESocketError
— потомок класса Exception
. Ошибка инициализации или отключения
сокета.EstackOverf low
— потомок класса EExternal
. Переполнение стека.EstreamError
— потомок класса Exception
. Базовый класс ошибок, связанных с
потоками.EStringListError
— потомок класса Exception
. Неверная работа со списком.EThread
— потомок класса Exception
. Ошибка синхронизации потоков.ETreeViewError
— потомок класса Exception
. Неверная работа с деревом.EUnderflow
—
потомок класса EMathError
. Вещественное значение слишком
мало.EUpdateError
— потомок класса EDatabaseError
. Ошибка обновления набора
данных сервера.EVariantError
— потомок класса Exception
. Ошибка при работе с типом
данных Variant
.EWebBrokerException
— потомок класса Exception
. Ошибка при работе с объектом
WebBroker.
EWriteError
— потомок класса EFilerError
. Ошибка при записи данных
в поток.EZeroDivide
— потомок класса EMathError
. Ошибка деления вещественного
числа на ноль.