123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- program exceptdemo2;
- {$mode objfpc}
- uses
- BrowserConsole, BrowserApp, WasiEnv,WASIHostApp, JS, Classes, SysUtils, Web, WebAssembly;
- type
- { TMyApplication }
- TMyApplication = class(TWASIHostApplication)
- private
- procedure DoAfter(Sender: TObject; aDescriptor: TWebAssemblyStartDescriptor);
- procedure ShowInfo(aInfo: TLastExceptionInfo);
- protected
- procedure DoRun; override;
- public
- end;
- procedure TMyApplication.ShowInfo(aInfo : TLastExceptionInfo);
- begin
- with aInfo do
- Writeln('Got exception during DoTest: ',ClassName,': "',Message,'", more: ',More)
- end;
- procedure TMyApplication.DoAfter(Sender: TObject; aDescriptor: TWebAssemblyStartDescriptor);
- type
- TTestProc = procedure;
- var
- lInfo : TLastExceptionInfo;
- begin
- try
- TTestProc(aDescriptor.exported['DoTest'])();
- except
- on e : EWasmNativeException do
- Writeln('Exception ',E.NativeClass,' raised: ',e.NativeMessage);
- end;
- try
- TTestProc(aDescriptor.exported['DoTest2'])();
- except
- on e : EWasmNativeException do
- Writeln('Exception ',E.NativeClass,' raised: ',e.NativeMessage);
- end;
- end;
- procedure TMyApplication.DoRun;
- begin
- // Let the wasi hosting environment know we'll handle exceptions.
- StartWebAssembly('demolib.wasm',True,Nil,@DoAfter);
- end;
- var
- Application : TMyApplication;
- begin
- Application:=TMyApplication.Create(nil);
- Application.Initialize;
- Application.Run;
- end.
|