bool OnError(uint errorcode, string filename, uint lineno, uint colno, string context)
{
...
if(critical)
{
return(true); // для подтверждения остановки выполнения скрипта
}
else
{
return(false); // для продолжения выполнения на чарте (текущий вызов прерывается, но следующие тики/таймеры и пр. работают)
}
}
是的,当然,那又怎样。我在这里贴满了各种支票。
我知道这个地方,我不明白为什么会发生这种情况!我不知道。
我检查了这一行之前的数组大小和其他变量的异常值。
但专家顾问每周仍会崩溃几次。
这很可能是我的错误,我也不反对。我反对的是,我没有任何机制去寻找狗的埋葬地点。
同时,还有一个简单而方便的排除机制。它们就是为这种情况而推出的。
雷纳特回答我说,如果他们引入这种机制,不明智的程序员会立即开始犯错,他们将不得不进行清理。
在我看来,这是一个可笑的说法。
顺便说一下,作为异常的替代,你可以实现一个简单的OnError事件处理程序,像这样。
顺便说一下,作为异常的替代,你可以实现一个简单的OnError事件处理程序,像这样。
我想这就能让我满意了,虽然不是完全满意,因为我需要将所需变量声明为全局变量,以便在OnError中可见。
但无论如何我都会很高兴。有时你只需要抓住一个错误,在找到并解决了问题之后,你可以再次将它们隐藏在本地。
如何向Renat传达这个关于OnError的想法?
我想这让我很满意,虽然不是完全满意,因为有必要将所需的变量声明为全局变量,以便在OnError中可见。
但无论如何我都会很高兴。你只是有时需要抓住一个错误,在找到并解决了问题之后,你可以再次将它们隐藏在本地。
如何将这个关于OnError的想法传递给Renat?
这不是一个原则问题。如果一个程序遇到了严重的 错误,其命运只能是被卸载。
每个重要的功能都有返回代码,一切都很详细。因此,开发者并没有失去对其程序的控制。
ps:当然,即使在明确指出错误的索引位置之后,还能听到 "不够!",这是很了不起的。
使用内置的代码检查器,同样的断言。
那么,这里的情况是不同的。一个人有一个零星的错误(在不明确的条件下很少再现)。专家顾问还是崩溃了。如果他设置了Assert,他将得到同样的错误,但不是立即得到,也不清楚为什么。这就是为什么我要求他给我看代码。
最后,如果这种导致脚本停止的错误不仅有位置,而且有完整的上下文:调用堆栈、变量内容等,可能会有帮助。你可以使用预处理器指令 使这种输出成为可选项,即指定错误诊断级别:默认情况下保持原样,但允许类似。
那么,这里的情况是不同的。一个人有一个零星的错误(在不明确的条件下很少再现)。专家顾问还是崩溃了。如果他设置了Assert,他将得到同样的错误,但不是立即得到,也不清楚为什么。这就是为什么我要求他给我看代码。
最后,如果这种导致脚本停止的错误不仅有位置,而且有完整的上下文:调用堆栈、变量内容等,可能会有帮助。可以使用预处理器指令 使这种输出成为可选项,即指定错误诊断级别:默认情况下保持不变,但要使其可以递增。
在调试过程中可以追踪到完整的上下文。
另一点是零星的错误必须在某些片段被抓住。
而这正是需求产生的地方。 在历史上运行调试器.
这个问题是老问题了,已经被提出过很多次了,但它仍然存在。
那么,这里的情况是不同的。一个人有一个零星的错误(在不明确的条件下很少再现)。专家顾问还是崩溃了。如果他设置了Assert,他将得到同样的错误,但不是立即得到,也不清楚为什么。这就是为什么我要求他给我看代码。
95%的零星错误都与初始化错误或缺乏初始化有关。 因此,一个 代码片段不会有帮助,整个代码也不会因为偏执而有帮助;-)
应该在离表现的地方很远的地方寻找原因,阿法尔只是要求把开发商枪毙,这很无聊。这肯定会有帮助。
// 这真的会有帮助,falkov ?)
完整的上下文可以通过调试进行追踪。
另一件事是,零星的错误应该在某些片段中被抓住。
而这正是需求产生的地方。 在历史上运行调试器.
这个问题是老问题了,已经提出过很多次了,但它仍然存在。
那么,这里的情况是不同的。一个人有一个零星的错误(在不明确的条件下很少再现)。专家顾问还是崩溃了。如果他设置了Assert,他将得到同样的错误,但不是立即得到,也不清楚为什么。这就是为什么我要求他给我看代码。
显示代码没有意义,因为有相当复杂的逻辑,谁需要了解它,错误部分本身很简单,但它没有给出任何发现错误的方法,有半屏的纯代码。每个变量都要在底部和顶部检查边界。如果变量超过了这些限制,就会显示一条信息,列出所有的变量和它们的值。当然,某处有错误,但这就是错误所在!!!。让我提醒你,它每周发生一到两次。专家顾问一直在昼夜工作。
然后我不仅对这个特定的案例感兴趣,虽然这是我第一次。
最后一点,如果这种导致脚本停止的错误不仅有位置,而且有完整的上下文:调用栈、变量内容等,也许会很有用。你可以使用预处理器指令 使这种输出成为可选项,即指定错误诊断级别:默认情况下保持原样,但允许使其更加复杂。
这将是非常好的!一个完整的上下文肯定能让我找到错误!我需要的是在错误发生时,在专家顾问离开之前查看变量。
亲爱的Renat!也许你可以这样做?