Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
да указывается, конечно, и что с того. Я это место и обложил разными проверками.
Место мне известно, мне не понятно, почему это происходит!
Проверяю и размер массива перед этой строчкой и другие переменные на выход за границы.
А все равно пару раз в неделю эксперт вываливается.
Скорее всего, это моя ошибка, я и не против этого. Я против того, что у меня нет никаких механизмов выяснить, где собака порылась.
В то-же время есть простой и удобный механизм исключений. Они и были как-раз введены для подобных случаев.
Ренат же мне отвечал, что стоит им ввести этот механизм, как тут-же неразумные программеры начнут косячить, а им расхлебывать.
Какой-то несуразный аргумент, на мой взгляд.
Кстати, в качестве альтернативы исключениям можно было бы реализовать при желании просто обработчик события OnError, типа так:
Кстати, в качестве альтернативы исключениям можно было бы реализовать при желании просто обработчик события OnError, типа так:
Думаю, что это удовлетворило меня, хоть и не полностью, т.к. понадобилось бы объявлять нужные переменные глобальными, чтобы их было видно в OnError.
Но я все-равно был бы рад этому. Нужно просто иногда выловить ошибку, после обнаружения и устранения проблемы можно было бы опять спрятать их в локальные.
Как бы донести эту мысль про OnError до Рената?
Думаю, что это удовлетворило меня, хоть и не полностью, т.к. понадобилось бы объявлять нужные переменные глобальными, чтобы их было видно в OnError.
Но я все-равно был бы рад этому. Нужно просто иногда выловить ошибку, после обнаружения и устранения проблемы можно было бы опять спрятать их в локальные.
Как бы донести эту мысль про OnError до Рената?
Принципиально нет. Если программа нарвалась на критическую ошибку, то ее судьба - только на выгрузку.
У каждой важной функции есть коды возврата, все детально расписано. Поэтому разработчик не теряет контроля над своей программой.
ps: удивительно конечно даже после четкой выдачи места неправильной индексации слышать "мало даете!"
Пользуйте вcтроенную проверку кода, те же утверждения (assertions).
Ну, тут ситуация другая. У человека происходит спорадическая ошибка (воспроизводится редко при непонятных условиях). У него и так эксперт вываливается. Если он ассерт поставит - вывалится ровно так же, но не сразу, и не будет понятно почему. Поэтому я и прошу, чтоб он код показал.
И до кучи, может быть было бы полезно, если бы такие ошибки, приводящие к остановке скрипта, сопровождались не просто указанием места, но и полным контекстом: стек вызова, содержимое переменных и т.д. Можно сделать такой вывод опциональным с помощью директивы препроцессора, т.е. указать уровень диагностики ошибок: по умолчанию оставить как есть, но чтоб была возможность уподробить.
Ну, тут ситуация другая. У человека происходит спорадическая ошибка (воспроизводится редко при непонятных условиях). У него и так эксперт вываливается. Если он ассерт поставит - вывалится ровно так же, но не сразу, и не будет понятно почему. Поэтому я и прошу, чтоб он код показал.
И до кучи, может быть было бы полезно, если бы такие ошибки, приводящие к остановке скрипта, сопровождались не просто указанием места, но и полным контекстом: стек вызова, содержимое переменных и т.д. Можно сделать такой вывод опциональным с помощью директивы препроцессора, т.е. указать уровень диагностики ошибок: по умолчанию оставить как есть, но чтоб была возможность уподробить.
Полный контекст можно отследить при дебагинге.
Другое дело что спорадические ошибки нужно отлавливать на определённых участках.
И вот тут всплывает потребность запускать дебагер на истории.
Проблема старая, много раз поднималась, но пока воз и ныне там.
Ну, тут ситуация другая. У человека происходит спорадическая ошибка (воспроизводится редко при непонятных условиях). У него и так эксперт вываливается. Если он ассерт поставит - вывалится ровно так же, но не сразу, и не будет понятно почему. Поэтому я и прошу, чтоб он код показал.
95% спорадических ошибок связаны с ошибками инициализации, либо отсутствием таковой. Так что фрагмент кода не поможет, а весь он не даст, ибо паранойя. ;-)
Причину следует искать очень далеко от места проявления, а афтару влом - проще потребовать расстрела для разработчиков. Это ведь наверняка поможет.
// Ведь правда поможет, falkov ? :)
Полный контекст можно отследить при дебагинге.
Другое дело что спорадические ошибки нужно отлавливать на определённых участках.
И вот тут всплывает потребность запускать дебагер на истории.
Проблема старая, много раз поднималась, но пока воз и ныне там.
Ну, тут ситуация другая. У человека происходит спорадическая ошибка (воспроизводится редко при непонятных условиях). У него и так эксперт вываливается. Если он ассерт поставит - вывалится ровно так же, но не сразу, и не будет понятно почему. Поэтому я и прошу, чтоб он код показал.
Код нет смысла показывать, потому что там достаточно сложная логика, нафик кому надо разбираться в ней, а сам участок возникновения ошибки простой, но он ничего не дает для поиска ошибки, там функция на полэкрана чистого кода. Каждая переменная проверяется на пределы снизу и сверху. Если переменная выходит за эти пределы, то выводится сообщение с перечислением всех переменных и их значений. Конечно, где-то ошибка, но вот где!! Напомню, что это случается раз или два в неделю. Советник пашет круглосуточно.
И потом, меня интересует не только данный конкретный случай, хотя у меня это первый раз.
И до кучи, может быть было бы полезно, если бы такие ошибки, приводящие к остановке скрипта, сопровождались не просто указанием места, но и полным контекстом: стек вызова, содержимое переменных и т.д. Можно сделать такой вывод опциональным с помощью директивы препроцессора, т.е. указать уровень диагностики ошибок: по умолчанию оставить как есть, но чтоб была возможность уподробить.
А вот так было бы здорово! Полный контекст, конечно, позволил бы мне найти ошибку! Мне и нужно, чтобы в момент ошибки, перед вылетом эксперта, посмотреть на переменные.
Уважаемый Ренат! Может, можно так сделать?