Member 13602527 Ответов: 2

Как я могу обработать исключение ArgumentException не обработано пользовательским кодом в мою программу на C#?


В моей программе MVC мне нужно захватывать данные один за другим.Но мне грозит "исключение ArgumentException не обработано пользовательским кодом" исключение.Я не могу ее решить.Исключение приближается
int len=obj.sort.Count()
Как я могу решить эту проблему?

Что я уже пробовал:

публичный класс KendoSort
{
публичное строковое поле { get; set; }
public string dir { get; set; }
public string compare { get; set; }
}

открытый класс dataObject
{
public int page { get; set; }
public int pageSize { get; set; }
public int take { get; set; }
public int skip { get; set; }

общественная список<kendosort&ГТ; сортировка { получить; набор; }

}

//
// GET: /лицензия/GetLicView
// Результат JSON
[Авторизовать]
public ActionResult GetLicView(dataObject obj)
{
если (сеанс["имя"] != нуль и усилитель; & сессия["имя пользователя"] != нуль и усилитель; & сессия["идентификатор GUID"] != нуль)
{
string guid = (string)Session["Guid"];
List<getalllicensesdetailsforroles_result> lic = новый список<getalllicensesdetailsforroles_result>();
lic = менеджер.GetuserLicensesDetails(идентификатор GUID пользователя.getuserrole(идентификатор GUID.Синтаксический анализ(идентификатор GUID)));

инт принять = 20;
int skip = 0;

взять игрок.взять;
пропустить = obj-файлы.пропустить;
int end = take+skip; // 0+20

тип int лен = obj-файлы.сортировать.Рассчитывать();
for (int i = 0; i < len; i++)
{
ВАР элемент = объект obj.сортировать[я];

если (элемент.поле == "разница" и усилитель; & деталь.реж == "АСК")
{
тик = тик.OrderBy(x => x.Start_Date).Список();
}
еще
{
тик = тик.OrderByDescending(x => x.Start_Date).Список();
}
}

2 Ответов

Рейтинг:
2

OriginalGriff

Два пути: "правильный путь" и "трудоемкий путь"

Правильный путь прост в долгосрочной перспективе, но требует от вас немного усилий, чтобы научиться использовать отладчик.
Трудоемкий способ включает в себя ручное добавление try ... catch блокирует весь ваш код и сообщает об ошибках в файл журнала или пользователю teh, а также добавляет больше, когда вы сужаете область возникновения проблемы и начинаете выяснять, почему. Отсюда и название. Это эффективно, но ..... правильный путь быстрее в долгосрочной перспективе (и часто в краткосрочной перспективе).

Так что мы сосредоточимся на правильном пути.
Запустите приложение в отладчике.
Когда он попадет в исключение, он остановится и отобразит сообщение, объясняющее, что произошло - это будет то же самое, что и у вас, но поскольку вы находитесь в отладчике, теперь у вас будет контроль над кодом и вы можете посмотреть, почему, и особенно на аргументы, предоставленные любому вызванному вами методу.
В отладчике вы можете смотреть на значения переменных, изменять их, запускать код из другого места - даже редактировать свой код и продолжать! Куча вещей, которые помогут вам понять, что вы сделали не так!

Google поможет вам, если вы просто найдете "visual studio debugger tutorial" и начнете думать о своем коде и о том, как он потерпел неудачу.


Рейтинг:
1

Member 13602527

Я нашел решение, используя условие if.Подобный этому.

if (obj.sort != null)
               {
                   int len = obj.sort.Count();


                   for (int i = 0; i < len; i++)
                   {
                       var item = obj.sort[i];
                          ..................................
                          ............................



Теперь исключение исчезло.


Richard Deeming

С тех пор как sort свойство-это список, если бы вы использовали .Count собственность вместо того, чтобы .Count() метод расширения, вы бы получили NullReferenceException вместо Ан ArgumentNullException Это могло бы облегчить обнаружение проблемы. :)