except - вылетает, что делать - не знаю....
От: ZetRooT Россия  
Дата: 14.04.05 05:53
Оценка:
решил поработать с exceptions типа пользователь дурак и всё такое. пишу следующий код

try
    Ky:= (image.Height-ysdvig) / (yMAX-yMIN);
    Kx:= (image.Width-xsdvig) / (Nf-N0);
  except
   on e_zero : EZeroDivide do
      begin
        showmessage('Ошибка в данных.');
        Ky := 1;
        Kx := 1;
      end;
  end;


а при создании ситуации деления на ноль в этом месте всё равно вылетает EZeroDivide. ткните носом в узкое место! или на доки по ним...

"Если бы не было колобка, его следовало бы придумать..."

Re: except - вылетает, что делать - не знаю....
От: ansi  
Дата: 14.04.05 05:55
Оценка:
Здравствуйте, ZetRooT, Вы писали:

ZRT>а при создании ситуации деления на ноль в этом месте всё равно вылетает EZeroDivide. ткните носом в узкое место! или на доки по ним...


Если запуск из под IDE, то вылетать будет
Re[2]: except - вылетает, что делать - не знаю....
От: ZetRooT Россия  
Дата: 14.04.05 06:08
Оценка:
Здравствуйте, ansi, Вы писали:

A>Здравствуйте, ZetRooT, Вы писали:


ZRT>>а при создании ситуации деления на ноль в этом месте всё равно вылетает EZeroDivide. ткните носом в узкое место! или на доки по ним...


A>Если запуск из под IDE, то вылетать будет


ясно. а в реале будет нужная мессага выводиться? ну вообще защищаемы код будет защищаться?

"Если бы не было колобка, его следовало бы придумать..."

Re[3]: except - вылетает, что делать - не знаю....
От: fetis  
Дата: 14.04.05 06:14
Оценка:
Если в Tools->Debugger Options->Language Exceptions стоит галка Stop on Delphi Exceptions, то исключительные ситуации будут обрабатываться Delphi. Если же не стоит, то вашими конструкциями try...except
Re[2]: except - вылетает, что делать - не знаю....
От: Shtirliz Россия  
Дата: 14.04.05 06:18
Оценка:
Здравствуйте, ansi, Вы писали:

A>Здравствуйте, ZetRooT, Вы писали:


ZRT>>а при создании ситуации деления на ноль в этом месте всё равно вылетает EZeroDivide. ткните носом в узкое место! или на доки по ним...


A>Если запуск из под IDE, то вылетать будет


Не всегда. Ее выключить можна.

Debugger options -> Language Exceptions И снять галочку Stop on Delphi Exceptions.

И в IDE не будет вылетать экцепшены.
... -= RSDN@Home 1.1.4 beta 5 rev 401 =- А в Winamp'e: И ничего не слышно...
Дункан Маклауд любил ходить в лес и издеваться над кукушками.
138385660
Re[3]: except - вылетает, что делать - не знаю....
От: ZetRooT Россия  
Дата: 14.04.05 06:24
Оценка:
Здравствуйте, Shtirliz, Вы писали:

S>Здравствуйте, ansi, Вы писали:


A>>Здравствуйте, ZetRooT, Вы писали:


ZRT>>>а при создании ситуации деления на ноль в этом месте всё равно вылетает EZeroDivide. ткните носом в узкое место! или на доки по ним...


A>>Если запуск из под IDE, то вылетать будет


S>Не всегда. Ее выключить можна.


S>Debugger options -> Language Exceptions И снять галочку Stop on Delphi Exceptions.


S>И в IDE не будет вылетать экцепшены.

S>

а есть опция чтоб она сама и ошибки правила?

"Если бы не было колобка, его следовало бы придумать..."

Re[4]: except - вылетает, что делать - не знаю....
От: Shtirliz Россия  
Дата: 14.04.05 06:37
Оценка: 1 (1)
Здравствуйте, ZetRooT, Вы писали:

ZRT>Здравствуйте, Shtirliz, Вы писали:


S>>Не всегда. Ее выключить можна.


S>>Debugger options -> Language Exceptions И снять галочку Stop on Delphi Exceptions.


S>>И в IDE не будет вылетать экцепшены.

S>>

ZRT>а есть опция чтоб она сама и ошибки правила?


Эта опция тока в ДНК есть...
У кого-то включена, у кого-то выключена...
... -= RSDN@Home 1.1.4 beta 5 rev 401 =- А в Winamp'e: Track 18
Дункан Маклауд любил ходить в лес и издеваться над кукушками.
138385660
Re: except - вылетает, что делать - не знаю....
От: Drago Россия  
Дата: 14.04.05 06:45
Оценка:
Здравствуйте, ZetRooT, Вы писали:

ZRT>а при создании ситуации деления на ноль в этом месте всё равно вылетает EZeroDivide. ткните носом в узкое место! или на доки по ним...


попробуй снять Stop on Delphi Exceptions в настройках
Re[5]: except - вылетает, что делать - не знаю....
От: ZetRooT Россия  
Дата: 14.04.05 07:00
Оценка:
Здравствуйте, Shtirliz, Вы писали:

S>Здравствуйте, ZetRooT, Вы писали:


ZRT>>Здравствуйте, Shtirliz, Вы писали:


S>>>Не всегда. Ее выключить можна.


S>>>Debugger options -> Language Exceptions И снять галочку Stop on Delphi Exceptions.


S>>>И в IDE не будет вылетать экцепшены.

S>>>

ZRT>>а есть опция чтоб она сама и ошибки правила?


S>Эта опция тока в ДНК есть...

S>У кого-то включена, у кого-то выключена...

хм надо мне эту ДНК скачать... прикольно! сама ошибки правит кинь ссылочку

"Если бы не было колобка, его следовало бы придумать..."

Re: except - вылетает, что делать - не знаю....
От: Dimonka Верблюд  
Дата: 14.04.05 07:53
Оценка: +1
Здравствуйте, ZetRooT, Вы писали:

try
  Ky:= (image.Height-ysdvig) / (yMAX-yMIN);
  Kx:= (image.Width-xsdvig) / (Nf-N0);
  except
    on e_zero : EZeroDivide do
      begin
        showmessage('Ошибка в данных.');
        Ky := 1;
        Kx := 1;
      end;
  end;


Здесь вполне можно бе эксепшенов обойтись, достаточно проверить выделенное на ноль.

ZRT>а при создании ситуации деления на ноль в этом месте всё равно вылетает EZeroDivide. ткните носом в узкое место! или на доки по ним...
Re[2]: except - вылетает, что делать - не знаю....
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 14.04.05 08:43
Оценка:
Здравствуйте, Dimonka, Вы писали:

D>Здесь вполне можно бе эксепшенов обойтись, достаточно проверить выделенное на ноль.


Согласен, что это было бы полезно. Была примерно такая ситуация: поиск минимума функции. Ну и не мудрствуя лукаво, чтобы не считать хитро определенную область определения, я поступал примерно так:

function F(const x: array of Double): Double;
begin
  try
    Result := OriginalF(x);
  except
    Result := 1E+10;
  end;
end;


Так вот, в результате длительного поиска под Win9x появлялась синяя кошечка... А под NT все было нормально. Проблему решило введение следующих функций следующего образца:

function Sqrt(x: Double): Double;
begin
  if x < 0 then raise ECalcError.Create();
  Result := System.Sqrt(x);
end;


С чем это было связано не знаю, но была гипотеза, что большой поток исключений приводил к переполнению где-то внутри Win9x и т. д.
Re[6]: except - вылетает, что делать - не знаю....
От: Vodyamba Россия  
Дата: 14.04.05 12:37
Оценка:
Здравствуйте, ZetRooT, Вы писали:

ZRT>хм надо мне эту ДНК скачать... прикольно! сама ошибки правит кинь ссылочку


А что так мало берём на себя то??? Надо чтоб всё само писалось и компилилось ))))))))
Re[2]: except - вылетает, что делать - не знаю....
От: Spaider Верблюд  
Дата: 15.04.05 08:53
Оценка:
Здравствуйте, Dimonka, Вы писали:

D>Здесь вполне можно бе эксепшенов обойтись, достаточно проверить выделенное на ноль.


Совершенно согласен. Необходимо стремиться минимизировать количество исключений, т.к. обработка исключений занимает очень много процессорного времени, да и места в стеке.
Золотое правило такое, нужно относиться к исключению, как к ситуации непредвиденной, т.е. если можешь предупредить некорректные действия, лучше это сделать.
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
--
К вашим услугам,
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.