Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
PowerCat
-14 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 445
1

Как узнать часть кода, вызывающую ошибку?

13.02.2018, 10:58. Просмотров 592. Ответов 9
Метки нет (Все метки)

Привет.
Сгенерировал ошибку. Вопрос - как понять, какая именно часть этой строки вызывает ошибку? Это общий вопрос, не конкретно по этой ошибке - как понять, какая именно часть строки кода вызывает исключение? Например, ошибка с именем в скобках, или с названием метода или еще что-то?
В описании ошибки - только описание ошибки и собственно имя вызывающего метода, а вот где она точно - непонятно...

Как узнать часть кода, вызывающую ошибку?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.02.2018, 10:58
Ответы с готовыми решениями:

Как отследить ошибку, вызывающую выгрузку приложения?
Всем здравствуйте. Приложение, работающее с Com-портом, после нескольких суток непрерывной...

Узнать часть кода сайта
Есть сайт с футбольными трансляциями footballhd.ru В правой части сайта - расписание матчей...

Как вытащить часть кода из кода страницы?
Знаю, что можно через json как-то. Вот например есть код страницы, на нем есть несколько одинаковых...

Как узнать дробную часть числа?
Как узнать дробную часть числа. Допустим. Дано число а = 18.3 нужна такая функция, которая...

9
SeIZVeIZ
900 / 787 / 327
Регистрация: 08.02.2014
Сообщений: 2,384
Завершенные тесты: 3
13.02.2018, 11:25 2
у ошибки есть StackTrace который показывает что вызывалось перед ошибкой, либо исследуешь его, либо не пишешь километровые конструкции из которых сложно понять, что пошло не так и разделяешь обращения к функциям на отдельные части кода.
0
kolorotur
Эксперт .NET
13263 / 10293 / 2675
Регистрация: 17.09.2011
Сообщений: 17,475
Завершенные тесты: 1
13.02.2018, 12:32 3
Цитата Сообщение от PowerCat Посмотреть сообщение
как понять, какая именно часть этой строки вызывает ошибку?
Разбейте одну строку на несколько.
Более короткий код не значит более быстрый.
0
PowerCat
-14 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 445
13.02.2018, 16:32  [ТС] 4
Я так и делаю, стараюсь разбивать максимально мелко. Однако это не всегда помогает. Вот, например, такая конструкция

C#
1
Vars.currentPage.Shapes[current_Connector_NameID].get_Cells("Prop.water").Formula=water_Cell_Value;
Поставил круглые скобки - и все...хрен ты поймешь в чем косяк, если не знать заебов связки visio+с# или написать FormulaU вместо просто Formula...

Отсюда и тема.
Ответ, в принципе понятен, что невозможно точно указать источник ошибки и надо всю строку просеивать ((( жаль
0
kolorotur
Эксперт .NET
13263 / 10293 / 2675
Регистрация: 17.09.2011
Сообщений: 17,475
Завершенные тесты: 1
13.02.2018, 16:46 5
Цитата Сообщение от PowerCat Посмотреть сообщение
Вот, например, такая конструкция
А что мешает разбить эту конструкцию на составные части?
C#
1
2
3
4
5
var page = Vars.currentPage;
var shapes = page.Shapes;
var shape = shapes[current_Connector_NameID];
var cells = shape.get_Cells("Prop.water");
cells.Formula=water_Cell_Value;
И смотрите где валится.
Посмотрели, разобрались — снова свернули в одну строку, если нужно (подсказка: не нужно).
0
PowerCat
-14 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 445
13.02.2018, 16:52  [ТС] 6
Да, так, разумеется, проще их искать, однако вопрос все равно остается...ошибиться можно в строке 2, поставив круглые скобки или написав Shape, а не Shapes, или внутри скобок указать что-то неверное...

В принципе можно закрывать, раз нет ничего типа...ну, скажем, подсветки (указания где-то в отладчике и т.д.) только той части выражения, которая косячит, например, выражения в скобках - тогда сразу понятно где искать ошибку...
0
kolorotur
Эксперт .NET
13263 / 10293 / 2675
Регистрация: 17.09.2011
Сообщений: 17,475
Завершенные тесты: 1
13.02.2018, 17:17 7
Цитата Сообщение от PowerCat Посмотреть сообщение
ошибиться можно в строке 2, поставив круглые скобки или написав Shape, а не Shapes, или внутри скобок указать что-то неверное...
Конечно можно, но это всегда исправляется мало-мальским знакомством с используемым API.
Ну или приложение даже не откомпилируется если ведется работа со статическими типами.

Цитата Сообщение от PowerCat Посмотреть сообщение
подсветки (указания где-то в отладчике и т.д.) только той части выражения, которая косячит, например, выражения в скобках
Если нужен конкретный вызов, который обрушился, то для этого есть Stack Trace — как сказал в первом же ответе товарищ SeIZVeIZ.
Если проблема с аргументом, то это уже зависит от того, кто писал код и как бросал исключение: если разработчик метода не указал причину ошибки в тексте исключения, то тут уж ничего не поделаешь.
0
Usaga
Эксперт .NET
6959 / 4833 / 830
Регистрация: 21.01.2016
Сообщений: 18,621
Завершенные тесты: 2
14.02.2018, 05:47 8
Цитата Сообщение от PowerCat Посмотреть сообщение
Поставил круглые скобки - и все...хрен ты поймешь в чем косяк
Да вот ниразу. Перехваченное в студии исключение не отменяет возможности использования отладчика на пару с мозгом головы.

В большинстве случаев, вполне можно по типу исключения прикинуть в каком месте строки оно было выброшено. Отладчиком изучить содержимое используемых в строке переменных. Использовать Immediate Window в конце концов, для перевыполнения части кода из строки. Вариантов уйма.

Вы просто потыкайтесь в интерфейсе студии, там средств отладки - завались и месиво. Этим же пользоваться надо, а не панику разводить, что непонятно в каком месте строки ошибка проявилась.
0
PowerCat
-14 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 445
14.02.2018, 10:03  [ТС] 9
Ну вот собственно в этом и заключался вопрос - есть ли что-то, что безусловно покажет ошибочную конструкцию ))
Вопрос можно закрывать, раз такого нет )
0
kolorotur
Эксперт .NET
13263 / 10293 / 2675
Регистрация: 17.09.2011
Сообщений: 17,475
Завершенные тесты: 1
14.02.2018, 14:54 10
Цитата Сообщение от PowerCat Посмотреть сообщение
раз такого нет
Вам выше раз пять уже показали как это делать, а вы как попугай продолжаете повторять: "Нет, нет".
Зачем?

На скриншоте же уже видно, что ошибку выбрасывает метод get_Cells, значит синтаксических ошибок нет — исключение вылетает изнутри этого метода. Куда уж точнее?
Почему метод бросает это исключение — это уже совсем другой вопрос, ответ на который вам ни один инструмент не даст, т.к. не может прочитать мысли и мотивы разработчика, бросавшего исключение.
0
14.02.2018, 14:54
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.02.2018, 14:54

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как узнать, на какую часть формы кликнул пользователь?
Дана форма, поделенная на 9 равных частей(пусть будет форма для крестиков-ноликов), необходимо...

Как отключить часть кода
Добрый день! Подскажите пожалуйста как закрыть часть программы: xnew = .x + .vx * Dt + 0.5 * .ax *...

Как работает эта часть кода?
Всем привет. Читаю книгу Data Structures and Algorithms with JavaScript...

Объяснить как работает часть кода
Нужна помощь, объяснить как работает часть кода, а именно добавление элементов в двусвязный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.