![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| okaton |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 24.11.2006 Репутация: нет Всего: нет |
Доброго времени суток.
У меня возникла проблема (большая). Я собрал программу, на моей машине работает прекрасно. А вот на других (framework 2 установлен) не работает. И выдает (The END - название формы): ![]() где Details это:
Что это я не "очень" понимаю (если честно вобще не понимаю) Помогите мне разобраться пожалуйсто, а то я уже с ума схожу Это сообщение отредактировал(а) okaton - 19.10.2007, 16:56 |
|||
|
||||
| Experimenter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 430 Регистрация: 8.5.2007 Где: Уфа Репутация: 4 Всего: 17 |
Привет!
Во-первых, делаешь ли ты обертки try-catch в своем коде? Если сделаешь, то можно легко локализовать тот участок, где вызывается данное исключение. Из данного сообщения можно лишь понять, что где-то ты выходишь за рамки заданного тобой массива. Конкретнее сказать невозможно. -------------------- public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){ if(zlo1 < zlo2) return zlo1; else if(zlo1 > zlo2) return zlo2; else throw new Exception("Kill yourself by the wall"); } |
|||
|
||||
| okaton |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 24.11.2006 Репутация: нет Всего: нет |
Experimenter, Привет!
try-catch не использовал. А почему я не выхожу за границы массива, на машине где установлен c#? Добавлено через 8 минут и 8 секунд А как работать с try-catch (если не сложно)? |
|||
|
||||
| archeg |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 6.1.2007 Где: Киев Репутация: 4 Всего: 27 |
Ну значит на разных машинах твоя программа ведет себя по-разному
А вообще-то уверен что где-то на форуме было. А еще лучше какую-то книгу прочитать - там найдешь намного больше Это сообщение отредактировал(а) archeg - 19.10.2007, 18:21 -------------------- ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru) Дядька всегда можно спросить в аське, если не задалбывать - не откажет И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои ;) |
||||
|
|||||
| Experimenter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 430 Регистрация: 8.5.2007 Где: Уфа Репутация: 4 Всего: 17 |
Увидишь даже номер строки, где ошибка произошла (если она произошла). З.Ы. Если только по массиву отследить нужно, то тогда конечно catch (IndexOutOfRangeException ex) Это сообщение отредактировал(а) Experimenter - 19.10.2007, 18:39 -------------------- public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){ if(zlo1 < zlo2) return zlo1; else if(zlo1 > zlo2) return zlo2; else throw new Exception("Kill yourself by the wall"); } |
|||
|
||||
| okaton |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 24.11.2006 Репутация: нет Всего: нет |
archeg, Спасибо.
Тупой вопрос, а почему моя программа на разных машинах ведет себя по-разному? Я думал что код один и тот же где описано как ей вести себя. Смогу ли я с помощью try-catch отловить на своей машине ошибку, если она там не возникает или (try-catch) будет как-то особенно работать на других машинах? А что здесь писать?
Добавлено через 2 минуты и 4 секунды Experimenter, Спасибо. Последний вопрос снимаю |
|||
|
||||
| Experimenter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 430 Регистрация: 8.5.2007 Где: Уфа Репутация: 4 Всего: 17 |
okaton, есть такое предположение, что на твоей машине программа тоже может выдать ошибку, но ты работаешь с программой как ее создатель, а юзер - как юзер. Он может совершить ряд нелогичных действий (с твоей точки зрения и с точки зрения CLR), которые ты бы не стал совершать, потому что он понятия не имеет, как твоя программа устроена. Для этого и существует тестирование.
Добавлено через 5 минут и 49 секунд В любом случае возьми за правило оборачивать код в отлов исключений, и твоя работа в части технической поддержки твоих приложений будет существенно облегчена. А то и вообще отпадет за ненадобностью. -------------------- public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){ if(zlo1 < zlo2) return zlo1; else if(zlo1 > zlo2) return zlo2; else throw new Exception("Kill yourself by the wall"); } |
|||
|
||||
| okaton |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 24.11.2006 Репутация: нет Всего: нет |
Experimenter, дело в том что я совершаю абсолютно одинаковые действия на двух машинах (вот что странно),
а эффект различный :(
На этом этапе(TH.Form23.RW_Data_in_Mass() (предфинальном)) программа работает без участия пользователя, она записывает в массивы данные (в том числе из файлов) а здесь (TH.Form23.Rabota()) она обрабатывает полученные по ходу данные + (отсюда TH.Form23.RW_Data_in_Mass() ) Но допустив что я что-то упустил (я уже склоняюсь к тому что так оно и есть) я не могу понять вот это
Единственное что отсюда TH.Form22.Proverka() и отсюда стартует функция в которой содержиться TH.Form23.RW_Data_in_Mass() и т.д. А вот это вообще загадка
Сейчас попробую try-catch, поглядим что скажет |
||||||
|
|||||||
| archeg |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 6.1.2007 Где: Киев Репутация: 4 Всего: 27 |
Ну дай код - посмотрим ) -------------------- ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru) Дядька всегда можно спросить в аське, если не задалбывать - не откажет И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои ;) |
|||
|
||||
| Experimenter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 430 Регистрация: 8.5.2007 Где: Уфа Репутация: 4 Всего: 17 |
Действительно, тащи код, вот эту самую процедуру TH.Form23.RW_Data_in_Mass() и все, что ты ей на вход даешь...
-------------------- public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){ if(zlo1 < zlo2) return zlo1; else if(zlo1 > zlo2) return zlo2; else throw new Exception("Kill yourself by the wall"); } |
|||
|
||||
| okaton |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 24.11.2006 Репутация: нет Всего: нет |
У меня складывается такое впечатление что программа не может получить доступ к файлу (T_ASA1.1 это первый файл к которому она обращается, распологается в корневой директории моей программы (на моей машине пробовал тот же вариант(в смысле там же расположил - работает))) Что интересно после возникновении ошибки на рабочем столе возникает T_ASA1.1 размером 0кb Это сообщение отредактировал(а) okaton - 19.10.2007, 20:26 |
|||
|
||||
| okaton |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 24.11.2006 Репутация: нет Всего: нет |
Я поставил в RW_Data_in_Mass() перед каждым циклом считывания файла try-catch программа отработала как надо Перед этим я ставил try-catch на все функции в Rabota() и была ошибка
Добавлено через 4 минуты и 47 секунд Неужели проблема в ДНК? Что же далать? |
|||
|
||||
| Experimenter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 430 Регистрация: 8.5.2007 Где: Уфа Репутация: 4 Всего: 17 |
Главный претендент на исключение вот этот цикл:
В файл "T_ASA" + nn + ".1" могут и ручками залезть любопытные, размер массива strs изменится, и лови его, исключение. У тебя здесь нет проверки массива strs на его размерность, но тем не менее переменную i ты инкрементируешь без всяких оглядок. -------------------- public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){ if(zlo1 < zlo2) return zlo1; else if(zlo1 > zlo2) return zlo2; else throw new Exception("Kill yourself by the wall"); } |
|||
|
||||
| okaton |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 24.11.2006 Репутация: нет Всего: нет |
Про ручки и то что могут согласен |
|||
|
||||
| 1stain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 30.7.2007 Где: Киев - Харьков Репутация: 3 Всего: 40 |
проблема в том, что i даже инкрементировать не надо, вылетит сразу, на strs[0]. Все дело в том, что у тебя файлы существуют и они не пустые, а на другом компе файла нет, он создается, но данных не содержит. Соответственно text = "" и массив strs не содержит ничего.
з.ы.
ты сам почти нашел причину - ...T_ASA1.1 размером 0кb (а то что он возникает на рабочем столе, так программу запускают с рабочего стола, а путь для создания файла ты нигде не указываешь, так что все закономерно) з.з.ы. а вообще, по-моему тебе нужно использвать сериализацию Это сообщение отредактировал(а) 1stain - 19.10.2007, 21:23 -------------------- Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein) ![]() |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |