我有一個應用程序的問題,我正在使用Delphi XE7和Android 6.0或更高版本上運行的應用程序,但是當它出現錯誤時,它關閉應用程序而不是處理和顯示錯誤信息。我已經意識到我應該升級我的delphi,以便我的應用程序可以在Android 6.0或更高版本上運行。但我希望能夠通過嘗試「解決」這個問題來處理Delphi XE7,所以我不需要經歷安裝Delphi Berlin的不便之處來工作。德爾福:Android異常關閉我的應用程序
任何人有一個想法解決這個問題?
我有一個應用程序的問題,我正在使用Delphi XE7和Android 6.0或更高版本上運行的應用程序,但是當它出現錯誤時,它關閉應用程序而不是處理和顯示錯誤信息。我已經意識到我應該升級我的delphi,以便我的應用程序可以在Android 6.0或更高版本上運行。但我希望能夠通過嘗試「解決」這個問題來處理Delphi XE7,所以我不需要經歷安裝Delphi Berlin的不便之處來工作。德爾福:Android異常關閉我的應用程序
任何人有一個想法解決這個問題?
您需要跟蹤Application.OnException := MyExceptionHandler
中的例外情況。這隻適用於主線程,之後需要在後臺線程上執行相同的操作。優秀文章在這裏:https://blog.grijjy.com/2017/02/21/build-your-own-error-reporter-part-2-android/
如果你把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;
我的問題是我的應用程序關閉時嘗試...除了在Android 6.0或更高版本,你有同樣的問題?...我使用Delphi XE7。 –
是的,舒爾,這在我的應用程序多次出現。總是用E.message跟蹤它並找到錯誤原點。請把你的代碼放在這裏給大家一起看看錯誤。如果您有錯誤描述(如E.message或IException類型),請與我們分享。 –
你用什麼delphi? –
U可以向我展示一個例子? –