Exception TTaskDialog

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Exception TTaskDialog

Сообщение kit » 19.05.2017 09:17:07

Как сделать обработчик ошибок с формой TTaskDialog, типа:
try
...
except
raise TTaskDialog.Create
end;
kit
постоялец
 
Сообщения: 156
Зарегистрирован: 29.09.2016 09:39:07

Re: Exception TTaskDialog

Сообщение vitaly_l » 19.05.2017 09:34:04

Код: Выделить всё
  try
    //raise TTaskDialog.Create;
    raise Exception.CreateFmt('Недопустимое название : ''%s''', [name]);
  except
    on e:exception do
    ShowMessage(e.Message);
  end;
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Exception TTaskDialog

Сообщение kit » 19.05.2017 10:14:19

Хочу что б можна било посмотреть детали ошибки при нажатии кнопки TaskDialogButton
kit
постоялец
 
Сообщения: 156
Зарегистрирован: 29.09.2016 09:39:07

Re: Exception TTaskDialog

Сообщение vitaly_l » 19.05.2017 10:29:00

Код: Выделить всё
  try
    TaskDialog := TTaskDialog.Create;

// ...

  except
    on e:exception do
    ShowMessage(e.Message);
  end;
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Exception TTaskDialog

Сообщение zub » 22.05.2017 17:02:33

Проблема в получении "деталей" ошибки или создании окна?
Вообщета создавать сложные окна при ошибке не есть хорошо.
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Exception TTaskDialog

Сообщение kit » 23.05.2017 08:36:56

zub писал(а):Проблема в получении "деталей" ошибки или создании окна?
Вообщета создавать сложные окна при ошибке не есть хорошо.

детали ошибки мои. хочу сложное окно ошибки вместо стандартного
kit
постоялец
 
Сообщения: 156
Зарегистрирован: 29.09.2016 09:39:07

Re: Exception TTaskDialog

Сообщение Лекс Айрин » 23.05.2017 09:42:55

kit, а в чем проблема? Создай динамическое окно там же. Другое дело, что если дом рушится, то поздно обои клеить и в случае действительно серьезной ошибки обработчик может захлебнуться.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Exception TTaskDialog

Сообщение zub » 23.05.2017 10:56:33

Код: Выделить всё
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs;

type

  { TForm1 }

  TForm1 = class(TForm)
    FAppProps:TApplicationProperties;

    procedure _onCreateHandler(Sender: TObject);
    procedure ExceptionHandler(Sender: TObject; E: Exception);

  private

  public

  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }
procedure GetAV;
begin
  pinteger(0)^:=100;
end;

procedure TForm1.ExceptionHandler(Sender: TObject; E: Exception);
var
  errformm:TTaskDialog;
begin
  errformm:=TTaskDialog.Create(nil);
  errformm.Caption:='haha!';
  errformm.Execute;
  errformm.Free;
end;

procedure TForm1._onCreateHandler(Sender: TObject);
begin
  FAppProps := TApplicationProperties.Create(Self);
  FAppProps.OnException := @ExceptionHandler;
  FAppProps.CaptureExceptions := True;

  GetAV;
end;

end.


TForm1._onCreateHandler повесить на TForm1.onCreate
Программа назначает свой обработчик необработаных исключений, в котором создает "сложное" левое окно и генерит исключение для "проверки"
При запуске под лазарем с отладчиком обработчик всеравно используется стандартный, поэтому либо запускать вне лазаря, либо в лазаре без отладчика.

Но это дурость, делать так ненадо
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

Рейтинг@Mail.ru
cron