No.
MQL4
няма поддръжка на синтаксис за конструкция, подобна на try/except/finally
или try/catch
случай на използване в python/java и подобни езици.
Как да се справим с изключенията?
Да предположим, че няма грешки по време на компилиране.
Грешките по време на изпълнение са трудни за справяне, някои дори причиняват срив на софтуера.
Човек може и по-скоро трябва проактивно да дезинфекцира MQL4-кода с надлежна проверка на типа и предварителни валидации на случаите на използване, за да се предотвратят изключения.
Изключения от това са операциите dbPool
, които може при някои условия "законно" да не успеят да дадат очакван резултат.
A GetLastError()
(ако е изчистено a priori самото изключение) може да служи като идентификация почти след смъртта, а не като манипулатор на изключение.
4202? Не е твой проблем, брато
_LastError == 4202 ... does not explain the trouble <<< stdlib.mqh
4202
ERR_OBJECT_DOES_NOT_EXIST
Object does not exist
Вашият проблем изглежда е свързан с bar
"посочване" извън TimeSeries
-reverse-stepping-index на Close[]
стойности.
0 <= aBarPtrIDX < Bars
Следваща цел? Close[aBarPtrIDX]
погрешно схващане
След известно време, прекарано в домейн MQL4
, човек се запознава с няколко противоречиви факта. Една от потенциалните изненади е, че текуща лента, "горещата нула" [0]
, съдържа Close[0] == Bid
по време на целия си жизнен цикъл.
След като лентата за изпълнение бъде прекратена от aNewBarEVENT
( сигнализирано от Volume[0] == 1
( или Volume[0] < aPreviousVolume_0
-- по-безопасен режим за случай, MQL4
-свободно свързаният цикъл на събития е пропуснал няколко quote
-пристигания по време на епизода на заетост)), Close[1]
представлява последната посетена цена през съответния Bar
-период, а Close[0]
продължава да сърфира по винаги променящата се цена Bid
person
user3666197
schedule
24.08.2015