Игнор ошибок
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.116] |
|
|
ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Игнор ошибок
|
Сообщ.
#1
,
|
|
|
|
Вот в VB есть такое:
![]() ![]() On Error Resume Next и ВСЕ последующие ошибки игнорируются.. В Delphi часом такого нету? |
|
Сообщ.
#2
,
|
|
|
|
![]() ![]() unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public procedure AppException(Sender: TObject; E: Exception); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.AppException(Sender: TObject; E: Exception); begin ShowMessage(E.Message); end; procedure TForm1.FormCreate(Sender: TObject); begin Application.OnException :=AppException; end; procedure TForm1.Button1Click(Sender: TObject); var i: integer; j: Integer; begin i := 0; j := 1; ShowMessage(FloatToStr(j/i)); end; end. |
|
Сообщ.
#3
,
|
|
|
|
Цитата uk- @ и ВСЕ последующие ошибки игнорируются.. Что значит "игнорируются" ?? ![]() ![]() On Error Resume Next <First_VB_Statement> <Second_VB_Statement> И если в <First_VB_Statement> возникнет исключение, то <Second_VB_Statement> всё равно выполнится ?? Так что ли?? В дельфи такое поведение можно эмулировать только обрамив каждый оператор в try except end |
|
Сообщ.
#4
,
|
|
|
|
Демо сенкс
Добавлено jack128 я не понял про что ты.. |
|
Сообщ.
#5
,
|
|
|
|
uk- Использование структуры
![]() ![]() try {Список операторов} except {Если была ошибка} {Генерировать сообщение об ошибке?} end; эта структура позволяет отлавливать большинство ошибок, если в секции except ничего не написать, то сообщение об ошибке появляться не будет! |
|
Сообщ.
#6
,
|
|
|
|
glengine честно - ты первое сообщение ПРОЧИТАЛ???
Добавлено Объясню подробнее если дело в этом.. Вот у меня процедура где в строке №3 и №5 ошибки: ![]() ![]() Строка №1 Строка №2 Строка №3 // Тута Строка №4 Строка №5 // Тута Строка №6 Если я в VB сделаю так: ![]() ![]() On Error Resume Next Строка №1 Строка №2 Строка №3 // Тута Строка №4 Строка №5 // Тута Строка №6 То И №3 и №5 просто пропустяться, а код будет выполнятся следующий дальше.. А в каждой строке ставить try except end? |
|
Сообщ.
#7
,
|
|
|
|
Цитата uk- @ А в каждой строке ставить try except end? в дельфи - да. Но вообще смысл подобного, зачем это нужно? |
|
Сообщ.
#8
,
|
|
|
|
Цитата jack128 @ Цитата uk- @ А в каждой строке ставить try except end? в дельфи - да. Но вообще смысл подобного, зачем это нужно? Странно.. А код Демо ?? (я просто не проверял) |
|
Сообщ.
#9
,
|
|
|
|
Цитата uk- @ А код Демо ?? просто гасит сообщение об ошибке и выводит своё идентичное: ShowMessage(E.Message); НО, код, расположенный за местом ошибки не выполнится |
|
Сообщ.
#10
,
|
|
|
|
Цитата uk- @ Странно.. А код Демо ?? (я просто не проверял) Видимо, я сразу не так понял, что тебе нужно. Приведенный мною код обрабатывает исключение, возникшее практически в любом месте программы. но, увы, не позволит продолжить программу за опереатором, вызвавшим исключение. В Delphi такое невозможно. |
|
Сообщ.
#11
,
|
|
|
|
Ладно..
Спасибо всем! |