Какое из предложенных исправлений приведет к корректной работе программы добавить оператор write

Процедура READ вызывается с помощью соответствующего оператора процедуры.

Общая форма записи оператора

READ (X,Y. Z), где X,Y. Z – переменные, называемые

При выполнении процедуры READ работа программы приостанавливается, ЭВМ ждет ввода данных. Пользователь должен с клавиатуры ввести значения переменных, указанных в списке, отделяя их одним пробелом. Ввод завершается нажатием клавиши ENTER. Можно нажимать клавишу ввода и после набора каждого элемента ввода.

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

Для лучшего понимания работы данной процедуры и ее умелого использования при задании значений нескольких переменных необходимо знать, что при вводе значений переменных (констант) с клавиатуры они сначала идут в буфер клавиатуры, а потом считываются в ячейки оперативной памяти, отведенные компилятором этим переменным. При считывании буфер очищается по принципу очереди (первым зашел – первым вышел). Это означает, что при вводе сразу нескольких констант и при последующем нажатии клавиши ENTER из буфера клавиатуры будет считано столько констант, сколько переменных в операторе READ, а остальные останутся в буфере. Если же в буфере клавиатуры после очередного считывания останутся еще константы, то при следующем операторе READ остановки работы программы не будет, и его переменные получат свои значения из буфера (если только в нем достаточно констант для всех переменных).

Раскрываем корень

Например, пусть имеется фрагмент программы, включающий в себя два оператора READ:

и пусть по первому оператору READ на клавиатуре набрано 5 констант. Тогда при работе второго READ останова работы программы не будет и переменные C и D получат значения последних двух ранее введенных констант. Если же ввести 4 константы, то второй оператор READ затребует еще одну константу с клавиатуры.

Вызов процедуры READLN имеет тот же синтаксис, что и оператор READ, однако ее работа отличается от работы первой процедуры. При однократном вводе констант отличий нет, а при одноразовом вводе нескольких констант происходит очистка буфера клавиатуры. Так, если в нашем примере заменить первый READ на READLN и тоже ввести сразу 5 констант, то второй оператор READ произведет остановку работы программы и затребует повторного ввода последних двух значений для переменных D и E. Заметим также, что оператор READLN используется преимущественно при вводе текстовых констант (READLN – read line – читать текст).

Процедуры вывода WRITE и WRITELN

Процедуры вывода WRITE и WRITELN служат для вывода на экран констант (как числовых, так и текстовых), значений переменных и выражений. Они вызываются с помощью одноименных операторов вызова процедур, например:

WRITE (‘программа’, X, Y – Z * 3).

По этому оператору на экран будет выведено в одной строке слово «программа» и далее без пробелов значения переменной X и выражения Y – Z * 3. Например, если имеем X = -3, Y = -5, Z = 12, то на экран будет выведено: программа-3-41.

CWE, CERT, MISRA, OWASP — просто модные слова или способ повысить качество программного обеспече…

Чтобы отделить элементы вывода друг от друга, используется прием форматирования вывода. Так, WRITE (А:20) – одиночное форматирование – показывает, что значению переменной А отводится 20 позиций на экране монитора. Если в значение переменной А входит менее 20 символов, то они сдвигаются вправо, а слева строка заполняется пробелами.

Двойное форматирование используется только для вывода вещественных значений. Например, WRITE (C:17:7) означает, что для вывода значения переменной C отведено всего 17 позиций, из них 7 позиций предназначены для представления дробной части. Если формат не указан, то вещественные константы выводятся на экран в экспоненциальной форме. Заметим также, что форматировать в операторах WRITE можно не только переменные, но и выражения, например:

WRITE (cos (x + 4): 5: 2);

Работа оператора WRITE отличается от работы оператора WRITELN тем, что по завершении вывода у WRITE курсор остается в конце списка вывода, а у WRITELN он переходит на следующую строку. Часто используют оператор WRITELN без списка вывода для вывода на экран пустой строки.

Проиллюстрируем работу этих операторов на следующем примере:

var FIRST, SECOND, TROIS, SUM: integer;

writeln (‘Введите 3 числа ‘);

readln (FIRST, SECOND, TROIS);

SUM:= FIRST + SECOND + TROIS;

writeln (‘Среднее значение ‘, FIRST:4,’,’,SECOND:4,’,’);

write (TROIS:4,’ равно ‘;(SUM div 3):3)

На экран будет выведено:

Введите 3 числа 2 12 9 Среднее значение 3, 12, 9 равно 8

Лабораторная работа № 1

Цель работы: выработать практические навыки использования системы программирования Borland Pascal или Delphi, научиться создавать, вводить, отправлять на выполнение и исправлять простейшие программы на языке Паскаль, познакомиться с диагностическими сообщениями компилятора об ошибках на примере программ, реализующих линейные алгоритмы.

Общие сведения

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

Перед выполнением работы необходимо ознакомиться с теоретическим материалом по темам «Описание языка Паскаль», «Простые операторы. Ввод/вывод данных».

Пример. Определить расстояние на плоскости между двумя точками с заданными координатами M1(x1,y1) и M2(x2,y2).

Решение задачи.

В этом примере проведем полный разбор решения задачи.

Математическая модель: расстояние на плоскости между двумя точками M1(x1,y1) и M2(x2,y2) высчитывается по формуле:

Составим блок-схему алгоритма, а затем уточним содержимое блоков «Вычисление расстояния» и «Вывод расстояния» (см. рис.1):

Рис. 1. Блок-схема алгоритма

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

program example1;var x1, x2, y1, y2: Integer; d:Real; begin Writeln(‘Эта программа вычисляет расстояние между двумя точками на плоскости’); Writeln(‘Введите координаты двух точек:’); Write(‘x1= ‘); Readln(x1); Write(‘y1= ‘); Readln(y1); Write(‘x2= ‘); Readln(x2); Write(‘y2 =’); Readln(y2); d:=sqrt(sqr(x2-x1)+sqr(y2-y1)); Writeln(‘d= ‘,d:6:2); Writeln(‘нажмите Enter для завершения работы программы’); Readln; end.

Варианты заданий

Задание 1. Даны x, y. Составить программу вычисления значения выражения:

a) b) c) d)

Источник: poisk-ru.ru

ошибки, вызванные некорректной работы программы и необнаруженные

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

Читайте также:
Флешка нет носителя как исправить программа

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

Полагаю, что каждый из вариантов можно признать приемлемым

нужно ли вообще указывать на то, что ошибка возникает из-за некорректных настроек программного обеспечения? или только то, что нарушение допускается и не выявляется регулярно?

taxcons
нужно ли вообще указывать на то, что ошибка возникает из-за некорректных настроек программного обеспечения? или только то, что нарушение допускается и не выявляется регулярно?

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

kvestor (cd2e6)

Что значит ошибка из-за некорректной настройки? Ошибка она и есть ошибка. Какого рода ошибка, существенна ли она, как она влияет на БУ, отчетность? Если существенна и влияет, то здесь не только СВК.

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

kvestor (cd2e6)
В чем выражается «некорректность проводок»?

taxcons
нет. не существенна. вопрос собственно был только в том, нужно ли вообще упоминать в рекоммендации что некорректные проводки формируются автомотически программой (и не выявляются СВК), или нет необходимости про это упоминать.

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

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

Сельхозозабоченная

taxcons
нет. не существенна. вопрос собственно был только в том, нужно ли вообще упоминать в рекоммендации что некорректные проводки формируются автомотически программой (и не выявляются СВК), или нет необходимости про это упоминать.

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

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

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

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

я предлагаю все-таки включить мозГ.

1) ЗАЧЕМ мы пишем менеджменту, что ребята, у вас в консерватории не все в порядке?

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

Либо экстраполяция найденной ошибки свидетельствует о том, что на самом деле ошибка материальна (существенна).

Вы же не описали ЧТо конкретно у них не так. Поэтому без конкретики — рассуждать очень сложно: каждый опирается на свой опыт и имеет свои ассоциации с данной темой.
2) как Вы сами-то думаете: надо указать, что у них ошибка появляется в результате проведения в программе?

ДАвайте размышлять: ИТ-контроли — и вообще все, что связано со сферой ИТ — это как правило контроли верхнего уровня (entity level control)

а это значит, что если мы нашли что где-то хромает ИТ — значит это обычно серьзно.
Потому что может хромать там, где не нашли.

IT -наше все сегодня )).

Потому что если я говорю программе сделать Дт 01 Кт 60, а она мне вместо этого делает запись Дт 20 Кт 60 (или еще лучше — я ей говорю, начисли Иванову зарплату — а она начисляет Петрову) — то сами понимаете. какова может быть цена вопроса.

Потому что это означает — что я своей программе вообще доверять не могу.
А значит — и подтвердить достоверность отчетности — это крайне трудозатратно (мильон детальных тестов) и вообще сложно.

Слушайте — давайте вернемся к конкретике.

Источник: www.audit-it.ru

Обработка исключений в Python (try except)

Программа, написанная на языке Python, останавливается сразу как обнаружит ошибку. Ошибки могут быть (как минимум) двух типов:

  • Синтаксические ошибки — возникают, когда написанное выражение не соответствует правилам языка (например, написана лишняя скобка);
  • Исключения — возникают во время выполнения программы (например, при делении на ноль).

Синтаксические ошибки исправить просто (если вы используете IDE, он их подсветит). А вот с исключениями всё немного сложнее — не всегда при написании программы можно сказать возникнет или нет в данном месте исключение. Чтобы приложение продолжило работу при возникновении проблем, такие ошибки нужно перехватывать и обрабатывать с помощью блока try/except .

Как устроен механизм исключений

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

Читайте также:
Проектном менеджменте есть понятие программа проектов

‍♂️ Пример : напишем скрипт, в котором функция ожидает число, а мы передаём сроку (это вызовет исключение «TypeError»):

def b(value): print(«-> b») print(value + 1) # ошибка тут def a(value): print(«-> a») b(value) a(«10») > -> a > -> b > Traceback (most recent call last): > File «test.py», line 11, in > a(«10») > File «test.py», line 8, in a > b(value) > File «test.py», line 3, in b > print(value + 1) > TypeError: can only concatenate str (not «int») to str

В данном примере мы запускаем файл » test.py » (через консоль). Вызывается функция » a «, внутри которой вызывается функция » b «. Все работает хорошо до сточки print(value + 1) . Тут интерпретатор понимает, что нельзя конкатенировать строку с числом, останавливает выполнение программы и вызывает исключение «TypeError».

Далее ошибка передается по цепочке в обратном направлении: » b » → » a » → » test.py «. Так как в данном примере мы не позаботились обработать эту ошибку, вся информация по ошибке отобразится в консоли в виде Traceback.

Traceback (трассировка) — это отчёт, содержащий вызовы функций, выполненные в определенный момент. Трассировка помогает узнать, что пошло не так и в каком месте это произошло.

Traceback лучше читать снизу вверх ↑

В нашем примере Traceback содержится следующую информацию (читаем снизу вверх):

  1. TypeError — тип ошибки (означает, что операция не может быть выполнена с переменной этого типа);
  2. can only concatenate str (not «int») to str — подробное описание ошибки (конкатенировать можно только строку со строкой);
  3. Стек вызова функций (1-я линия — место, 2-я линия — код). В нашем примере видно, что в файле «test.py» на 11-й линии был вызов функции «a» со строковым аргументом «10». Далее был вызов функции «b». print(value + 1) это последнее, что было выполнено — тут и произошла ошибка.
  4. most recent call last — означает, что самый последний вызов будет отображаться последним в стеке (в нашем примере последним выполнился print(value + 1) ).

В Python ошибку можно перехватить, обработать, и продолжить выполнение программы — для этого используется конструкция try . except . .

Как обрабатывать исключения в Python (try except)

В Python исключения обрабатываются с помощью блоков try/except . Для этого операция, которая может вызвать исключение, помещается внутрь блока try . А код, который должен быть выполнен при возникновении ошибки, находится внутри except .

Например, вот как можно обработать ошибку деления на ноль:

try: a = 7 / 0 except: print(‘Ошибка! Деление на 0’)

Здесь в блоке try находится код a = 7 / 0 — при попытке его выполнить возникнет исключение и выполнится код в блоке except (то есть будет выведено сообщение «Ошибка! Деление на 0»). После этого программа продолжит свое выполнение.

PEP 8 рекомендует, по возможности, указывать конкретный тип исключения после ключевого слова except (чтобы перехватывать и обрабатывать конкретные исключения):

try: a = 7 / 0 except ZeroDivisionError: print(‘Ошибка! Деление на 0’)

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

try: a = 7 / 0 except Exception: print(‘Любая ошибка!’)

As — сохраняет ошибку в переменную

Перехваченная ошибка представляет собой объект класса, унаследованного от «BaseException». С помощью ключевого слова as можно записать этот объект в переменную, чтобы обратиться к нему внутри блока except :

try: file = open(‘ok123.txt’, ‘r’) except FileNotFoundError as e: print(e) > [Errno 2] No such file or directory: ‘ok123.txt’

В примере выше мы обращаемся к объекту класса «FileNotFoundError» (при выводе на экран через print отобразится строка с полным описанием ошибки).

У каждого объекта есть поля, к которым можно обращаться (например если нужно логировать ошибку в собственном формате):

import datetime now = datetime.datetime.now().strftime(«%d-%m-%Y %H:%M:%S») try: file = open(‘ok123.txt’, ‘r’) except FileNotFoundError as e: print(f» [FileNotFoundError]: , filename: «) > 20-11-2021 18:42:01 [FileNotFoundError]: No such file or directory, filename: ok123.txt

Finally — выполняется всегда

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

Обычно try/except используется для перехвата исключений и восстановления нормальной работы приложения, а try/finally для того, чтобы гарантировать выполнение определенных действий (например, для закрытия внешних ресурсов, таких как ранее открытые файлы).

В следующем примере откроем файл и обратимся к несуществующей строке:

file = open(‘ok.txt’, ‘r’) try: lines = file.readlines() print(lines[5]) finally: file.close() if file.closed: print(«файл закрыт!») > файл закрыт! > Traceback (most recent call last): > File «test.py», line 5, in > print(lines[5]) > IndexError: list index out of range

Даже после исключения «IndexError», сработал код в секции finally , который закрыл файл.

p.s. данный пример создан для демонстрации, в реальном проекте для работы с файлами лучше использовать менеджер контекста with.

Также можно использовать одновременно три блока try/except/finally . В этом случае:

  • в try — код, который может вызвать исключения;
  • в except — код, который должен выполниться при возникновении исключения;
  • в finally — код, который должен выполниться в любом случае.

Else — выполняется когда исключение не было вызвано

Иногда нужно выполнить определенные действия, когда код внутри блока try не вызвал исключения. Для этого используется блок else .

Допустим нужно вывести результат деления двух чисел и обработать исключения в случае попытки деления на ноль:

b = int(input(‘b = ‘)) c = int(input(‘c = ‘)) try: a = b / c except ZeroDivisionError: print(‘Ошибка! Деление на 0’) else: print(f»a = «) > b = 10 > c = 1 > a = 10.0

В этом случае, если пользователь присвоит переменной » с » ноль, то появится исключение и будет выведено сообщение «‘Ошибка! Деление на 0′», а код внутри блока else выполняться не будет. Если ошибки не будет, то на экране появятся результаты деления.

Несколько блоков except

В программе может возникнуть несколько исключений, например:

  1. Ошибка преобразования введенных значений к типу float («ValueError»);
  2. Деление на ноль («ZeroDivisionError»).

В Python, чтобы по-разному обрабатывать разные типы ошибок, создают несколько блоков except :

try: b = float(input(‘b = ‘)) c = float(input(‘c = ‘)) a = b / c except ZeroDivisionError: print(‘Ошибка! Деление на 0’) except ValueError: print(‘Число введено неверно’) else: print(f»a = «) > b = 10 > c = 0 > Ошибка! Деление на 0 > b = 10 > c = питон > Число введено неверно

Теперь для разных типов ошибок есть свой обработчик.

Читайте также:
К парциальным программам относятся

Несколько типов исключений в одном блоке except

Можно также обрабатывать в одном блоке except сразу несколько исключений. Для этого они записываются в круглых скобках, через запятую сразу после ключевого слова except . Чтобы обработать сообщения «ZeroDivisionError» и «ValueError» в одном блоке записываем их следующим образом:

try: b = float(input(‘b = ‘)) c = float(input(‘c = ‘)) a = b / c except (ZeroDivisionError, ValueError) as er: print(er) else: print(‘a = ‘, a)

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

Raise — самостоятельный вызов исключений

Исключения можно генерировать самостоятельно — для этого нужно запустить оператор raise .

min = 100 if min > 10: raise Exception(‘min must be less than 10’) > Traceback (most recent call last): > File «test.py», line 3, in > raise Exception(‘min value must be less than 10’) > Exception: min must be less than 10

Перехватываются такие сообщения точно так же, как и остальные:

min = 100 try: if min > 10: raise Exception(‘min must be less than 10’) except Exception: print(‘Моя ошибка’) > Моя ошибка

Кроме того, ошибку можно обработать в блоке except и пробросить дальше (вверх по стеку) с помощью raise :

min = 100 try: if min > 10: raise Exception(‘min must be less than 10’) except Exception: print(‘Моя ошибка’) raise > Моя ошибка > Traceback (most recent call last): > File «test.py», line 5, in > raise Exception(‘min must be less than 10’) > Exception: min must be less than 10

Как пропустить ошибку

Иногда ошибку обрабатывать не нужно. В этом случае ее можно пропустить с помощью pass :

try: a = 7 / 0 except ZeroDivisionError: pass

Исключения в lambda функциях

Обрабатывать исключения внутри lambda функций нельзя (так как lambda записывается в виде одного выражения). В этом случае нужно использовать именованную функцию.

20 типов встроенных исключений в Python

Иерархия классов для встроенных исключений в Python выглядит так:

BaseException SystemExit KeyboardInterrupt GeneratorExit Exception ArithmeticError AssertionError . . . ValueError Warning

Все исключения в Python наследуются от базового BaseException :

  • SystemExit — системное исключение, вызываемое функцией sys.exit() во время выхода из приложения;
  • KeyboardInterrupt — возникает при завершении программы пользователем (чаще всего при нажатии клавиш Ctrl+C);
  • GeneratorExit — вызывается методом close объекта generator ;
  • Exception — исключения, которые можно и нужно обрабатывать (предыдущие были системными и их трогать не рекомендуется).

От Exception наследуются:

1 StopIteration — вызывается функцией next в том случае если в итераторе закончились элементы;

2 ArithmeticError — ошибки, возникающие при вычислении, бывают следующие типы:

  • FloatingPointError — ошибки при выполнении вычислений с плавающей точкой (встречаются редко);
  • OverflowError — результат вычислений большой для текущего представления (не появляется при операциях с целыми числами, но может появиться в некоторых других случаях);
  • ZeroDivisionError — возникает при попытке деления на ноль.

3 AssertionError — выражение, используемое в функции assert неверно;

4 AttributeError — у объекта отсутствует нужный атрибут;

5 BufferError — операция, для выполнения которой требуется буфер, не выполнена;

6 EOFError — ошибка чтения из файла;

7 ImportError — ошибка импортирования модуля;

8 LookupError — неверный индекс, делится на два типа:

  • IndexError — индекс выходит за пределы диапазона элементов;
  • KeyError — индекс отсутствует (для словарей, множеств и подобных объектов);

9 MemoryError — память переполнена;

10 NameError — отсутствует переменная с данным именем;

11 OSError — исключения, генерируемые операционной системой:

  • ChildProcessError — ошибки, связанные с выполнением дочернего процесса;
  • ConnectionError — исключения связанные с подключениями (BrokenPipeError, ConnectionResetError, ConnectionRefusedError, ConnectionAbortedError);
  • FileExistsError — возникает при попытке создания уже существующего файла или директории;
  • FileNotFoundError — генерируется при попытке обращения к несуществующему файлу;
  • InterruptedError — возникает в том случае если системный вызов был прерван внешним сигналом;
  • IsADirectoryError — программа обращается к файлу, а это директория;
  • NotADirectoryError — приложение обращается к директории, а это файл;
  • PermissionError — прав доступа недостаточно для выполнения операции;
  • ProcessLookupError — процесс, к которому обращается приложение не запущен или отсутствует;
  • TimeoutError — время ожидания истекло;

12 ReferenceError — попытка доступа к объекту с помощью слабой ссылки, когда объект не существует;

13 RuntimeError — генерируется в случае, когда исключение не может быть классифицировано или не подпадает под любую другую категорию;

14 NotImplementedError — абстрактные методы класса нуждаются в переопределении;

15 SyntaxError — ошибка синтаксиса;

16 SystemError — сигнализирует о внутренне ошибке;

17 TypeError — операция не может быть выполнена с переменной этого типа;

18 ValueError — возникает когда в функцию передается объект правильного типа, но имеющий некорректное значение;

19 UnicodeError — исключение связанное с кодирование текста в unicode , бывает трех видов:

  • UnicodeEncodeError — ошибка кодирования;
  • UnicodeDecodeError — ошибка декодирования;
  • UnicodeTranslateError — ошибка перевода unicode .

20 Warning — предупреждение, некритическая ошибка.

Посмотреть всю цепочку наследования конкретного типа исключения можно с помощью модуля inspect :

Подробное описание всех классов встроенных исключений в Python смотрите в официальной документации .

Как создать свой тип Exception

В Python можно создавать свои исключения. При этом есть одно обязательное условие: они должны быть потомками класса Exception :

class MyError(Exception): def __init__(self, text): self.txt = text try: raise MyError(‘Моя ошибка’) except MyError as er: print(er) > Моя ошибка

С помощью try/except контролируются и обрабатываются ошибки в приложении. Это особенно актуально для критически важных частей программы, где любые «падения» недопустимы (или могут привести к негативным последствиям). Например, если программа работает как «демон», падение приведет к полной остановке её работы. Или, например, при временном сбое соединения с базой данных, программа также прервёт своё выполнение (хотя можно было отловить ошибку и попробовать соединиться в БД заново).

Вместе с try/except можно использовать дополнительные блоки. Если использовать все блоки описанные в статье, то код будет выглядеть так:

try: # попробуем что-то сделать except (ZeroDivisionError, ValueError) as e: # обрабатываем исключения типа ZeroDivisionError или ValueError except Exception as e: # исключение не ZeroDivisionError и не ValueError # поэтому обрабатываем исключение общего типа (унаследованное от Exception) # сюда не сходят исключения типа GeneratorExit, KeyboardInterrupt, SystemExit else: # этот блок выполняется, если нет исключений # если в этом блоке сделать return, он не будет вызван, пока не выполнился блок finally finally: # этот блок выполняется всегда, даже если нет исключений else будет проигнорирован # если в этом блоке сделать return, то return в блоке

Подробнее о работе с исключениями в Python можно ознакомиться в официальной документации .

Источник: pythonchik.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru