如何解决"应用程序"的组件中发生了未经处理的异常?
EasyLanguage中包含PriceSeriesProvider、QuotesProvider、FundamentalQuotesProvider等在内的Provider对象(组件)的加载过程都是异步的(与之对应的是堵塞的),也就是说当使用Provider.Load = True之后,主程序会继续执行,而不会等待Provider加载完数据。Provider会在另外一个后台线程中加载数据,当Provider数据更新的时候可以触发Updated事件,当Provider的加载状态发生变化时会出发StateChanged事件。那么如果设置一个Provider.Load = True之后立即访问该集合中的数据就会因为数据尚未加载完全就尝试去访问的错误。为了避免这个错误,就一定要在访问数据前判断是否provider的状态已经是Loaded的。也即 if(provider.State = DataState.Loaded)。此外,对于一些异常的处理需要用try-catch -End代码块捕获到异常,并进行相应的处理。
示例1:使用try-catch-End代码块捕获异常
method void AnalysisTechnique_Initialized( elsystem.Object sender, elsystem.InitializedEventArgs args )
vars:int rs,double divide;
begin
divide = 0;
Try
rs = 12/divide; //但是0 不能作为除数,故而会抛出异常
catch(elsystem.Exception ex)
print(ex.Message); //处理异常,打印出异常的消息提示
End;
end;
//打印语句输出栏结果示例:
//EXCEPTION_FLT_DIVIDE_BY_ZERO