Ada_Ru форум

Обсуждение языка Ада

Exception?

Оставить новое сообщение

Сообщения

Vadim Godunko
Exception?
2003-01-12 19:31:47

Доброго времени суток!

 

По прочтении составленнолго на сайте словаря, появился вопрос: а как перевести execption/exception occurrence? Что из них исключение, а что - исключительная ситуация?

 

Вадим

Да, Вадим нас всех построил неслабо!

 

По прочтении составленнолго на сайте словаря, появился вопрос: а как перевести execption/exception occurrence? Что из них исключение, а что - исключительная ситуация?

 

А чёрт его батьку занет!

 

Я бы сказал, что "исключение" и "исключительная ситуация" - синонимы, и их следует использовать как перевод "exception"

 

А вот "exception occurrence" - это просто западня какая-то!

 

Мой самый толстый словарь для occurrence предлагает:

 

- случай, происшествие

- местонахождение, распространение

- месторождение, залегание (как геологические термины)

 

"распространение исключения" было бы неплохо, но по-русски несет

явный оттенок чего-то динамически происходящего. А это - не то.

hi,

"Sergey I. Rybin" wrote:

Да, Вадим нас всех построил неслабо!

>

По прочтении составленнолго на сайте словаря, появился вопрос: а как перевести execption/exception occurrence? Что из них исключение, а что - исключительная ситуация?

>

А чёрт его батьку занет!

>

Я бы сказал, что "исключение" и "исключительная ситуация" - синонимы, и их следует использовать как перевод "exception"

>

А вот "exception occurrence" - это просто западня какая-то!

а вот и нетушки :)

засады тут никакой нет. в большинстве случаев, можно рассматривать как синонимы, но ежели подойти к вопросу с творческим буквоедством... :)

...исключение - вестчь сугубо программная и возбуждается/генерируется недрами адской библиотеки времени выполнения (иначе, RTL или RTS). наводящий вопрос: "что является условием возбуждения исключения?" ес-сно напрашивается - наличие _исключительной_ситуации_, правильно? а что есть эта самая _исключительная_ситуация_?

а это может быть:

- сбой оборудования

- событие в операционной системе

- результат обнаружения ошибки проверочным кодом RTL

- ...

Мой самый толстый словарь для occurrence предлагает:

>

- случай, происшествие

- местонахождение, распространение

- месторождение, залегание (как геологические термины)

>

"распространение исключения" было бы неплохо, но по-русски несет явный оттенок чего-то динамически происходящего. А это - не то.

_распространение_исключений_ - это самостоятельная вестчь,

которая тоже имеется. процесс _распространения_исключений_

выглядит следующим образом:

предположим, что у нас есть процедуры: proc_1, proc_2 и proc_3.

пусть proc_1 вызывает proc_2, а proc_2 вызывает proc_3.

допустим, что в результате работы proc_3 было возбуждено

какое-либо исключение, тогда если это исключение не

обработано в proc_3, то оно может быть обработано

обработчиком исключений в proc_2. если не было обработки

этого исключения в proc_2, то это исключение _распространяется_

до proc_1, и далее, пока оно не будет обработано

или не будет достигнут уровень головной программы или задачи,

после чего происходит абортирование программы или задачи.

Alex

А вот "exception occurrence" - это просто западня какая-то!

 

а вот и нетушки :)

засады тут никакой нет. в большинстве случаев, можно рассматривать как синонимы, но ежели подойти к вопросу с творческим буквоедством... :)

 

Ну так и какие в результате предложения по переводу?

hi,

"Sergey I. Rybin" wrote:

А вот "exception occurrence" - это просто западня какая-то!

>

а вот и нетушки :)

засады тут никакой нет. в большинстве случаев, можно рассматривать как синонимы, но ежели подойти к вопросу с творческим буквоедством... :)

>

Ну так и какие в результате предложения по переводу?

э-э-э....

дык я ж, кажись, все энто дело весьма популярно объяснил...

...или нужен, собс-но, "приговор", а не "сказки"?

...тогда пжалста:

exception ---> исключение

exception occurence ---> исключительная ситуация

Alex

Ну так и какие в результате предложения по переводу?

 

э-э-э....

дык я ж, кажись, все энто дело весьма популярно объяснил...

 

...или нужен, собс-но, "приговор", а не "сказки"?

 

В идеале - и то, и другое. Во избежание недопонимания.

...тогда пжалста:

exception ---> исключение

exception occurence ---> исключительная ситуация

 

Единственное, что меня напрягает, это практически неизбежная

путаница, которая будет спровоцирована в воспаленном сознании

неопытного читателя. Придется аршинными буквами, и более одного

раза, в любом тексте говорить: "исключение, братцы, это есть

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

это когда такая ошибка оказалась обнаруженой, пошла гулять по

динамической структуре программы и оказалась в данный момент в

данном обработчике". Или что-то вроде этого.

 

Именно это я и имел в виду, говоря о засаде.

Sergey I. Rybin wrote:

Да, Вадим нас всех построил неслабо!

 

Пожалуйста, давайте без слова "построил". А то у меня в связи с занимаемой должностью ассоциации нехорошие возникают. :-)

 

 

За ночь привел мысли в порядок и попытаюсь изложить свой взгляд.

 

Данный косяк вылазит только в Ada95 и, как таковой, отсутствует в Ada83.

 

На исключения и их обработку неодходимо смотреть с двух сторон: статической и динамической.

 

Со статической точки зрения это не что иное как определение некоторого способа сохранения данных о непредвиденном поведении программы в процессе исполнения + определение способа "ловли" такого поведения.

 

С динамической точки зрения это уже наполненный реальными данными объект, а способ "ловли" превращается в выполнение некоторого кода при появлении в программе таких объектов.

 

Для различения этих точек зрения в Ada.Exceptions определено:

 

type Exception_Id ...

type Exception_Occurrence ...

 

первый есть идентификация "статического" объекта (иначе можно сказать "типа"), а второй - "динамического" объекта (или "объекта" данного "типа").

 

Если зафиксировать понятие "исключительная ситуация" как некоторое непредвиденно (или предвиденно, но недопустимое по каким-то причинам) возникшее явление (сугубо динамическое), а "распространением исключения" (exception propagation) (в смысле механизма поддержания exception handling-а - "обработки исключений") обозвать процесс "разбора" случившегося (с особым подходом к дальнейшему выполнению подпрограмм/задач/блоков кода), то что есть "исключение"? В принципе ответ прост - некоторый идентификатор, введенный через exception. Но как быть с наличием у него Id (кстати, доступного через атрибут) и Occurrence (доступного только через определение идентификатора в определении отбора исключений) я просто не знаю.

 

 

Вадим

 

PS. Объясните мне, бестолковому, на кой ляд человечеству пришло в голову строить Вавилонскую башню?

hi,

Vadim Godunko wrote:

Sergey I. Rybin wrote:

Да, Вадим нас всех построил неслабо!

>

Пожалуйста, давайте без слова "построил". А то у меня в связи с занимаемой должностью ассоциации нехорошие возникают. :-)

ага... ща мы твои ассоциации озвучить попытаемся:

"О Воин! Службою живущий,

Читай Устав на сон грядущий!!!

И утром, ото сна устав,

Читай усиленно Устав!!!"

:-)

>

Данный косяк вылазит только в Ada95 и, как таковой, отсутствует в Ada83.

похоже, что наличие грозного "косяка" - будет некоторым преувеличением.

тут скорее проблема детализации (или глубины) рассмотрения

механизма исключений

На исключения и их обработку неодходимо смотреть с двух сторон: статической и динамической.

...плюс стандартные средства низкоуровневого доступа

к этому хозяйству (пакет Ada.Exceptions),

которые, в некоторой степени, определяют пути

реальной реализации этого механизма

imho, соответствия

exception ---> исключение

exception occurence ---> исключительная ситуация

exception propagation ---> распространение исключения(й)

не содержат подлых противоречий

>

Вадим

>

PS. Объясните мне, бестолковому, на кой ляд человечеству пришло в голову строить Вавилонскую башню?

то что ты поведал миру - это не Вавилонская башня,

а всего лишь Адский механизм исключений :-)

Alex

hi,

перечитал ешо раз

Vadim Godunko wrote:

Если зафиксировать понятие "исключительная ситуация" как некоторое непредвиденно (или предвиденно, но недопустимое по каким-то причинам) возникшее явление (сугубо динамическое),

угу, и, самое imho, может быть как внешним по отношению к

Ада-системе, так и внутренним порождением Ада-системы,

но не программы(!)

а "распространением исключения"

(exception propagation) (в смысле механизма поддержания exception handling-а - "обработки исключений") обозвать процесс "разбора" случившегося (с особым подходом к дальнейшему выполнению

подпрограмм/задач/блоков кода)

"распространение..." - это не совсем "разбор полетов" (т.е. обработка) подразумевается, как раз, _распространение_ то есть

если исключение не обработано на одном уровне вложения

вызовов подпрограмм, то оно будет распространяться на уровень выше.

или, предположим, что обработчик подпрограммы subr_A отловил

какое-то исключение, а subr_A вызывает subr_B, а subr_B - subr_C..., и при этом subr_B, subr_C,... - не имеют своих обработчиков

исключений. значит этот обработчик может отлавливать исключения

которые будут возбуждены в результате выполнения

как собс-но subr_A, так и "вниз" по вложенности вызовов -

в subr_B, subr_C...

(я не затрагиваю здесь средства Ada.Exceptions)

Alex

Oleksandr Havva wrote:

hi,

 

перечитал ешо раз

 

Vadim Godunko wrote:

 

 

Если зафиксировать понятие "исключительная ситуация" как некоторое

непредвиденно (или предвиденно, но недопустимое по каким-то причинам)

возникшее явление (сугубо динамическое),

 

 

угу, и, самое imho, может быть как внешним по отношению к

Ада-системе, так и внутренним порождением Ада-системы,

но не программы(!)

Последнее неверно. И программы в том числе! Куда девался raise <exception_name>?

hi,

Vadim Godunko wrote:

Oleksandr Havva wrote:

hi,

>

перечитал ешо раз

>

Vadim Godunko wrote:

>

>

>Если зафиксировать понятие "исключительная ситуация" как некоторое >непредвиденно (или предвиденно, но недопустимое по каким-то причинам) >возникшее явление (сугубо динамическое),

>

>

угу, и, самое imho, может быть как внешним по отношению к

Ада-системе, так и внутренним порождением Ада-системы,

но не программы(!)

>

Последнее неверно. И программы в том числе! Куда девался raise

<exception_name>?

вообче-то я подразумевал только "внешние", по отношению

к программе, источники, посему и акцентировал внимание

на том, что _не_в_программе_ (соответственно, и _не_raise_).

поинт в том, что раз оно _в_программе_, то оно обязано

быть предвиденным/ожидаемым

однако, похоже на то, что я перемудрил самого себя

Alex

Hello!

 

On Mon, 13 Jan 2003, Sergey I. Rybin wrote:

 

А вот "exception occurrence" - это просто западня какая-то!

 

а вот и нетушки :)

засады тут никакой нет. в большинстве случаев, можно рассматривать как синонимы, но ежели подойти к вопросу с творческим буквоедством... :)

 

Ну так и какие в результате предложения по переводу?

 

 

exception -- исключение ( языковая/программная единица, ).

 

exception occurence -- возникновение исключения ( событие, происходящее при выполнении программы ).

 

 

Sincerely yours Cyril Sazonov

 

А вот "exception occurrence" - это просто западня какая-то!

 

а вот и нетушки :)

засады тут никакой нет. в большинстве случаев, можно рассматривать как синонимы, но ежели подойти к вопросу с творческим буквоедством... :)

 

Ну так и какие в результате предложения по переводу?

 

exception -- исключение ( языковая/программная единица, ).

exception occurence -- возникновение исключения ( событие, происходящее при выполнении программы ).

 

Лучше уж оригинал по-переводить.

 

== AARM-11(1) ==

An exception represents a kind of exceptional situation; an occurrence of such a situation (at run time) is called an exception occurrence. To raise an exception is to abandon normal program execution so as to draw attention to the fact that the corresponding situation has arisen. Performing some actions in response to the arising of an exception is called handling the exception.

== AARM-11(1) ==

 

Мой перевод:

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

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

exception - исключение (как человеческое описание ситуации)

exception id - идентификатор исключения (в реализации)

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

raise - возникновение исключения (возникает ситуация соответствующая человеческому описанию исключения, назначается exception id, ситуация записывается в exception occurence и начинается распространение)

 

== AARM-11(2a) ==

Wording Changes from Ada 83

We are more explicit about the difference between an exception and an occurrence of an exception. This is necessary because we now have a type (Exception_Occurrence) that represents exception occurrences, so the program can manipulate them. Furthermore, we say that when an exception is propagated, it is the same occurrence that is being

propagated (as opposed to a new occurrence of the same exception). The same issue applies to a re-raise statement. In order to understand these semantics, we have to make this distinction.

== AARM-11(2a) ==

 

Мой перевод:

Мы должны уточнить различие между исключением и проишествием

исключения. Это необходимо, потому что у нас есть тип

(Exception_Occurence) который представляет проишествие исключения, так что программа может использовать его. Более того, мы говорим что когда исключение распространяется, то есть одно и то же проишествие, которое распространяется (как противоположность новому проишествию того же исключения). Аналогичное требование применяется к инструкции re-raise. Для понимания этой семантики мы сделали такое различие.

Hello!

 

On Thu, 16 Jan 2003, Alexandre Makeev wrote:

 

exception -- исключение ( языковая/программная единица, ).

exception occurence -- возникновение исключения ( событие, происходящее при выполнении программы ).

 

Лучше уж оригинал по-переводить.

 

== AARM-11(1) ==

An exception represents a kind of exceptional situation; an occurrence of such a situation (at run time) is called an exception occurrence. To raise an exception is to abandon normal program execution so as to draw attention to the fact that the corresponding situation has arisen. Performing some actions in response to the arising of an exception is called handling the exception.

== AARM-11(1) ==

 

Мой перевод:

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

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

 

Это нисколько не противоречит написанному мною:

 

Exception -- логическое понятие программного текста.

Exception occurence -- физическое событие времени выполнения программы.

 

exception - исключение (как человеческое описание ситуации)

exception id - идентификатор исключения (в реализации)

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

raise - возникновение исключения (возникает ситуация соответствующая человеческому описанию исключения, назначается exception id, ситуация записывается в exception occurence и начинается распространение)

 

А вот насчёт "raise" ты ошибаешься. Это -- возбуждение исключения, т.е. действме программы при физическом событии ( возникновении исключения ), запрос на его обработку, который может быть выполнен программно.

 

Резюмируя вышесказанное можно описать ситуацию примерно так:

 

Возникновение исключения ( exception occurence ) возбуждает ( raise ) исключение ( exception ) в программой единице, которое может быть в ней обработано.

 

 

== AARM-11(2a) ==

Wording Changes from Ada 83

We are more explicit about the difference between an exception and an occurrence of an exception. This is necessary because we now have a type (Exception_Occurrence) that represents exception occurrences, so the program can manipulate them. Furthermore, we say that when an exception is propagated, it is the same occurrence that is being propagated (as opposed to a new occurrence of the same exception). The same issue applies to a re-raise statement. In order to understand these semantics, we have to make this distinction.

== AARM-11(2a) ==

 

Мой перевод:

Мы должны уточнить различие между исключением и проишествием

исключения. Это необходимо, потому что у нас есть тип

(Exception_Occurence) который представляет проишествие исключения, так что программа может использовать его. Более того, мы говорим что когда исключение распространяется, то есть одно и то же проишествие, которое распространяется (как противоположность новому проишествию того же исключения). Аналогичное требование применяется к инструкции re-raise. Для понимания этой семантики мы сделали такое различие.

 

Ты совершенно напрасно сюда тащишь распространение исключений. Это совсем другая ария, правда, из этой же оперы. !)

 

 

Sincerely yours Cyril Sazonov

Новое сообщение:
Страницы: 1

Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти