Ошибка при выполнении программы

Обновлено: 03.07.2024

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

Работа с ошибками – неотъемлемая часть любого процесса веб-разработки, вплоть до того, что опытные программисты со временем становятся экспертами в поиске и исправлении ошибок, которые они создают. Известный ученый-компьютерщик Эдсгер В. Дейкстра хорошо подытожил это, сказав: «Если отладка — это процесс устранения ошибок, то программирование — это процесс их добавления».

В следующей статье описываются 7 различных типов ошибок программирования, с которыми регулярно сталкиваются веб-разработчики. Мы также расскажем вам, где в Сан-Диего вы можете найти удаленный учебный курс по кодированию, который научит вас справляться с этими ошибками. Читайте дальше.

Содержание:

Вот 7 наиболее часто встречающихся ошибок программирования:

Что считается распространенными ошибками программирования?

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

1. Ошибки выполнения

Эти ошибки возникают, когда код «не работает» на другом компьютере, даже если он прекрасно работает на собственном компьютере разработчика. Эти ошибки особенно неприятны, потому что они напрямую влияют на конечного пользователя и делают приложение ненадежным или даже полностью неисправным.

2. Логические ошибки

С этими ошибками очень сложно справиться, потому что в коде нет ничего плохого: разработчик просто не запрограммировал компьютер так, чтобы он выполнял правильные действия. На самом деле из-за логической ошибки, вызванной просчетами между американскими и английскими единицами измерения, НАСА потеряло космический корабль в 1999 году.

3. Ошибки компиляции

Компиляция — это процесс преобразования языка программирования высокого уровня в язык более низкого уровня, более понятный компьютеру. Ошибки компиляции возникают, когда компилятор не может правильно преобразовать высокоуровневый код в низкоуровневый. Это предотвращает запуск или тестирование программного обеспечения.

4. Синтаксические ошибки

Компьютерные языки имеют свои собственные специализированные правила грамматики. Если эти правила не соблюдаются (например, разработчик опускает круглые скобки при написании кода), синтаксическая ошибка не позволяет запустить приложение.

5. Ошибки интерфейса

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

6. Ошибки ресурсов

Иногда программа может заставить компьютер, на котором она запущена, попытаться выделить больше ресурсов (мощность процессора, оперативная память, дисковое пространство и т. д.), чем у него есть. Это приводит к ошибкам в программе или даже к сбою всей системы.

7. Арифметические ошибки

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

Где я могу найти самый надежный удаленный учебный курс по программированию в Сан-Диего?

Понимание распространенных ошибок программирования и умение с ними справляться — важный навык, которым должен обладать каждый веб-разработчик. В Learn Academy мы можем научить вас делать именно это и многое другое на одном из наших интенсивных учебных курсов по программированию.

Но что, если вы не хотите выходить из дома из-за пандемии коронавируса? Не волнуйтесь! Наши онлайн-курсы по программированию доступны для всех студентов, независимо от того, живут ли они в районе Линда-Виста в Сан-Диего или в другом штате. Свяжитесь с нами сегодня.

Обнаружение различных типов ошибок в программировании – важная часть процесса разработки. Лучшие разработчики легко ориентируются в ошибках, которые они создают, и быстро их исправляют.

Сегодня мы поговорим о семи наиболее распространенных типах ошибок программирования и о том, как их избежать.

1. Синтаксические ошибки

Как и человеческие языки, компьютерные языки имеют правила грамматики. Но в то время как люди могут общаться с далеко не совершенной грамматикой, компьютеры не могут игнорировать ошибки, т. е. синтаксические ошибки.

Например, предположим, что правильный синтаксис для вывода чего-либо — print('hello') , и мы случайно забыли одну из скобок при написании кода. Произойдет синтаксическая ошибка, и это остановит запуск программы.

По мере того, как ваш уровень владения языком программирования повышается, вы будете реже делать синтаксические ошибки.Самый простой способ не допустить, чтобы они вызывали у вас проблемы, — узнать о них заранее. Многие текстовые редакторы или IDE имеют возможность предупреждать вас о синтаксических ошибках во время написания.

Совет: пишите быстрее с TextExpander

TextExpander позволяет легко сохранять часто используемые фрагменты кода, комментарии к документации и многое другое, а затем вставлять их в любое место с помощью простого сочетания клавиш или встроенного поиска.

2. Логические ошибки

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

Если вы не проверили требования заранее и не написали код для возврата самого старого пользователя в вашей системе, когда вам нужен самый новый, у вас возникла бы логическая ошибка.

Известный случай произошел в 1999 году, когда НАСА потеряло космический корабль из-за просчетов между английскими и американскими подразделениями. Программное обеспечение было закодировано одним способом, но должно было работать по-другому.

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

3. Ошибки компиляции

Для некоторых языков программирования требуется этап компиляции. При компиляции ваш язык высокого уровня преобразуется в язык более низкого уровня, который компьютер может лучше понять. Ошибка компиляции или времени компиляции возникает, когда компилятор не знает, как превратить ваш код в код более низкого уровня.

В нашем примере синтаксической ошибки, если бы мы компилировали print('hello' , компилятор остановился бы и сообщил нам, что не знает, как преобразовать это в язык более низкого уровня, потому что он ожидал a ) после ' .

Если в вашем программном обеспечении возникнет ошибка во время компиляции, вы не сможете его протестировать или запустить.

Так же, как и синтаксические ошибки, со временем вы научитесь их избегать, но в целом лучшее, что вы можете сделать, – это своевременно получать обратную связь, когда это происходит.

Компиляция происходит одновременно для всех файлов вашего проекта. Если вы внесли много изменений и видите много предупреждений или ошибок компилятора, это может быть очень сложно. Часто запуская компилятор, вы быстрее получите необходимую обратную связь, и вам будет легче понять, где решать проблемы.

4. Ошибки выполнения

Ошибки выполнения возникают, когда пользователь выполняет вашу программу. Код может работать правильно на вашем компьютере, но на веб-сервере может быть другая конфигурация, или с ним могут взаимодействовать таким образом, что это может вызвать ошибку во время выполнения.

Если ваша система взяла ввод из формы и попыталась сделать первую букву имени заглавной, выполнив что-то вроде params[:first_name].capitalize , это сломается, если форма будет отправлена ​​без имени.

Ошибки во время выполнения особенно раздражают, поскольку они напрямую влияют на конечного пользователя. Многие из этих других ошибок случаются, когда вы работаете за компьютером над кодом. Эти ошибки возникают во время работы системы и могут помешать кому-либо выполнить то, что ему нужно.

Убедитесь, что у вас есть хорошие отчеты об ошибках, чтобы фиксировать любые ошибки во время выполнения и автоматически открывать новые ошибки в вашей системе тикетов. Старайтесь учиться на каждом отчете об ошибке, чтобы в будущем вы могли защититься от этого типа ошибок.

Использование фреймворков и кода, поддерживаемого сообществом, — отличный способ свести к минимуму эти типы ошибок, потому что код находится во многих разных проектах, поэтому он уже обнаружил и исправил множество проблем.

5. Арифметические ошибки

Арифметическая ошибка – это разновидность логической ошибки, но она связана с математикой. Типичным примером при выполнении уравнения деления является то, что вы не можете делить на ноль, не вызывая проблем. Очень немногие люди напишут 5 / 0, но вы можете не подумать, что размер чего-то в вашей системе иногда может быть нулевым, что может привести к ошибке такого типа.

ages.max / ages.min могли возвращать ошибку, если ages.max или ages.min были равны нулю.

Арифметические ошибки могут вызывать логические ошибки, как мы обсуждали, или даже ошибки времени выполнения в случае деления на ноль.

Наличие функциональных тестов, которые всегда включают крайние случаи, такие как ноль или отрицательные числа, — отличный способ остановить эти арифметические ошибки на своем пути.

6. Ошибки ресурсов

Компьютер, на котором установлена ​​ваша программа, будет выделять фиксированное количество ресурсов для ее работы. Если что-то в вашем коде заставляет компьютер пытаться выделить больше ресурсов, чем у него есть, это может привести к ошибке ресурсов.

Если вы случайно написали цикл, из которого ваш код никогда не сможет выйти, у вас рано или поздно закончатся ресурсы. В этом примере цикл while будет продолжать добавлять новые элементы в массив. В конце концов у вас закончится память.

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

Хорошие отчеты об использовании ресурсов на ваших веб-серверах будут помечать код, который со временем потребляет слишком много ресурсов любого типа.

Ошибки ресурсов — это пример ошибки в программировании, которую может исправить операционная группа, а не разработчики.

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

7. Ошибки интерфейса

Ошибки интерфейса возникают, когда существует несоответствие между тем, как вы хотели использовать свою программу, и тем, как она используется на самом деле. Большинство вещей в программном обеспечении соответствуют стандартам. Если входные данные, которые получает ваша программа, не соответствуют стандартам, вы можете получить ошибку интерфейса.

Например, ошибка интерфейса может произойти, если у вас есть API, требующий установки определенных параметров, а эти параметры не заданы.

Если ошибки интерфейса не обрабатываются должным образом, они будут выглядеть как ошибка на вашей стороне, когда это ошибка на стороне вызывающего абонента. Это может вызвать разочарование с обеих сторон.

Имея четкую документацию и отлавливая эти ошибки, чтобы передать их вызывающей стороне удобным способом, вы лучше всего скажете: "Эй, вы не предоставили нам то, что нам нужно для обработки этого запроса". Это поможет сократить расходы на поддержку и порадует ваших клиентов, потому что они знают, что им нужно исправить.

Если вы не отловите эти ошибки и не передадите их обратно вызывающей стороне, они в конечном итоге будут отображаться в отчетах как ошибки времени выполнения, и вы в конечном итоге будете чрезмерно защищаться от них.

Ошибки неизбежны

К счастью, мы уже давно не нуждаемся в правильном размещении перфокарт с первого раза. Разработка программного обеспечения сложна, требования часто размыты, а код часто меняется. Старайтесь не корить себя и знайте, что все мы совершаем ошибки.

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

Надеюсь, это руководство подготовило вас к различным типам ошибок в программировании и разъяснило некоторые наиболее распространенные сообщения об ошибках.

Если вы писали код в течение длительного времени, пожалуйста, прокомментируйте ниже некоторые ошибки, которые вы недавно допустили, чтобы успокоить людей, которые не писали код так долго!

Программист должен знать тот факт, что очень мало
шансов, что программа запустится идеально с первого раза. Неважно, насколько
хорошо сделан дизайн и насколько тщательно написан код. Нельзя
сказать, что программа будет работать на 100% безошибочно. Таким образом, программист должен прилагать
усилия для обнаружения и исправления любых ошибок,
которые присутствуют в программе. Но перед обнаружением и устранением ошибок гораздо важнее,
чтобы программист знал о типах ошибок в программировании. Эта статья
объяснит вам типы ошибок в программировании, которые необходимо учитывать при написании
программы.

Типы ошибок в программировании

Синтаксические ошибки

Любое нарушение правил и плохое понимание
языка программирования приводит к синтаксическим ошибкам. Компилятор может обнаружить такие
ошибки. Если в программе присутствуют синтаксические ошибки, то компиляция
программы завершается неудачно и завершается после отображения списка ошибок и номера строки,
где произошли ошибки. В некоторых случаях номер строки может
не совсем точно указывать правильное место ошибки. В некоторых других случаях одна
синтаксическая ошибка может привести к появлению длинного списка ошибок. Исправление одной-двух
ошибок в программе может удалить весь список ошибок.

Ошибки выполнения

Ошибки выполнения — это ошибки, возникающие во время
выполнения программы. Вот некоторые примеры: ошибка деления на ноль,
недостаточно памяти для динамического выделения памяти, ссылка на элемент массива,
выходящий за пределы допустимого диапазона. Они не обнаруживаются компилятором в процессе компиляции. Программа
с такими ошибками будет запущена, но даст ошибочные результаты или может
привести к завершению программы. Обнаружение и устранение ошибки во время выполнения — это
сложная задача.

Логические ошибки

Как следует из самого названия, эти ошибки связаны с
логикой программы. Логические ошибки также не обнаруживаются компилятором и
приводят к неправильным результатам. Эти ошибки возникают из-за неправильного перевода
алгоритма в программу, плохого понимания задачи и отсутствия
ясности иерархии операторов. Рассмотрим следующий оператор C:

Когда a и b являются значениями типа float, они редко становятся
равными из-за ошибок усечения. Вызов printf может вообще не выполняться. Оператор
например, while(a!=b) может создать бесконечный цикл.

Скрытые ошибки

Скрытые ошибки – это "скрытые" ошибки, возникающие только при использовании
определенного набора данных. Рассмотрим пример ниже:

Ошибка возникает только тогда, когда c и d равны, потому что это
обнулит остаток (ошибка деления на ноль). Такие ошибки можно обнаружить
только с использованием всех возможных комбинаций данных.

Защита от этих ошибок программирования смоделирована на Java.

Ошибки программирования — это недостатки в работе приложений. Их обычно называют «ошибками», отсюда и термин «отладка».

Как разработчик, вы обнаружите, что тратите много времени на исправление ошибок. Ряд ошибок, с которыми вы столкнетесь, являются обычными, и знание их поможет вам в первую очередь предотвратить их.

Вот что вам нужно знать об этих трех типах ошибок программирования и как вы можете защититься от них:

1. Ошибки выполнения или выполнения

Это ошибки, возникающие при выполнении программы (т. е. во время выполнения). Они могут привести к тому, что программа не запустится должным образом или даже не запустится вообще.

Фатальные ошибки выполнения приводят к остановке выполнения программы, в то время как нефатальные ошибки приводят к завершению выполнения, но с неправильными результатами.

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

Поэтому деление на ноль приводит к арифметическому исключению в компиляторе Java.

2. Логические ошибки

Логические ошибки возникают из-за ошибочных рассуждений. Важно отметить, что эти ошибки не обязательно связаны с вашей «ошибкой». Они могут возникать из-за того, что вы не учли определенный сценарий выполнения.

С ними труднее всего справиться. Это связано с тем, что код с логической ошибкой является допустимой программой на языке, на котором он написан. Следовательно, он не вызовет ошибку компилятора. Единственная проблема заключается в том, что он дает неверные результаты.

Фатальная логическая ошибка приведет к остановке выполнения программы, в то время как нефатальная ошибка позволит продолжить выполнение программы, но с неправильными результатами.

Распространенная логическая ошибка – это ошибка "не на единицу". Обычно это происходит при задании условия продолжения цикла. Допустим, вы хотите распечатать первые пять квадратных чисел.

Возможно, в конечном итоге вы напишете приведенный ниже код в цикле for, который выдаст только первые четыре таких числа.

Чтобы избежать такой ошибки, вы можете вместо этого использовать Связанные: шаги по разработке программного обеспечения, которые должны знать все программисты

Еще одна логическая ошибка, на которую следует обратить внимание, — отсутствие условия завершения цикла. Это приведет к бесконечному циклу, и ваша программа никогда не завершит выполнение.

3. Синтаксические ошибки или ошибки времени компиляции

Эти ошибки вызваны нарушением языковых правил Java. Их также называют ошибками компиляции или времени компиляции.

С этими ошибками легче всего справиться, потому что ваш компилятор всегда будет сообщать о них. Многие компиляторы даже идут дальше и сообщают вам, в какой строке кода возникла ошибка.

Отказоустойчивость

Практический способ решения проблем с программным обеспечением — обеспечить отказоустойчивость, включив обработку исключений. Для этого можно использовать операторы try..catch.

Чтобы продолжить выполнение программы независимо от исключения, обнаруженного в блоке catch, используйте оператор finally.

См. пример кода ниже:

Приведенная выше программа генерирует случайное число от нуля до 10, а затем использует это число для деления значения счетчика от 10 до 100. Если встречается деление на ноль, система перехватывает ошибку и отображает сообщение.

Станьте лучше в программировании

Рекомендуется добавлять комментарии к коду. Это поможет вам легко просмотреть ваши файлы, если у вас есть ошибка. Один небольшой, но очень важный шаг к разработке надежных методов написания кода.

При правильном написании кода вы сможете избежать распространенных ошибок программирования.

Читайте также: