Delphi:Android Exception关闭我的应用程序

时间:2017-05-19 14:23:53

标签: android delphi

我在应用程序中遇到问题,我正在使用Delphi XE7并在Android 6.0或更高版本上运行应用程序,但是当它出现错误时它会关闭应用程序而不是处理和显示错误消息。我已经知道我应该升级我的delphi,以便我的应用程序可以在android 6.0或更高版本上运行。但我希望能够通过尝试“解决”这个问题来处理Delphi XE7,所以我不必经历安装Delphi Berlin的不便,例如工作。

任何人都有想法解决问题吗?

2 个答案:

答案 0 :(得分:1)

您需要在Application.OnException := MyExceptionHandler中跟踪例外情况。这只适用于主线程,需要在后台线程上执行相同的操作。这里有优秀的文章:https://blog.grijjy.com/2017/02/21/build-your-own-error-reporter-part-2-android/

答案 1 :(得分:0)

如果你把你的代码放在Try..Except块之间,你就可以使用上面的结构来破坏应用程序,并阅读消息内容:

Try
    Your code here
Except
on E:Exception do
    Showmessage('Error in module {your modulename}'+E.Message);
end;

问题是您需要在应用的许多部分或模块中执行此操作。但是,不要忘记这是最佳做法。

另一种方法是,您可以先为Windows编译应用程序,然后使用断点进行调试。

例如,如果您有一些代码只适用于Android,请将代码放在指令

之间
{$IFDEF ANDROID}
{$ENDIF}

例如,我的SQLConection片段显示了这个想法

try
DataModule.Connection1.Params.Values['DriverID'] := 'SQLite';
  {$IFDEF MSWINDOWS}
    DataModule2.Connection1.Params.Values['Database'] := 'C:/Data/test_DATABASE.sql';
  {$ENDIF}

  {$IFDEF ANDROID}
    DataModule2.Connection1.Params.Values['Database'] := GetHomePath + PathDelim + 'DATABASE.sql';
  {$ENDIF}
Except
    on E:Exception do
        Showmessage('Error on dataload ...'+E.Message);
    end;