Ошибки и исключения


Существуют два типа ошибок: синтаксические и семантические.

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

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

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

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

X=int(input())

print(1/X)

При вводе значения 2 программа выдаст следующие значения

При вводе 0 программа выдаст следующий фрагмент

Для работы с исключительными ситуациями используется конструкция

try :

# фрагмент программы

except : # except имя ошибки : - здесь определяется тип ошибки и реакция

# фрагмент программы, работающий в случае прерывания

else : #

# фрагмент программы, работающий в случае отсутствия прерываний

finally :

# фрагмент программы, работающий в любом

Пример решения задачи с обработкой прерывания

try :

X=int(input())

print(1/X)

except :

print(“Error dividing by zero”)

На экране появится следующее изображение

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

 


Классы

Python ограничен в множественном наследовании в классах. Внутренние переменные и внутренние методы классов начинаются с двух знаков нижнего подчеркивания «__» (например «__myprivatevar»). Можно присвоить значение переменной класса извне. Пример:

 

class Myclass:

common = 10

def __init__(self):

self. myvariable = 3

def myfunction (self, arg1, arg2):

return self. myvariable

# Здесь объявили класс Myclass.

# Функция __init__ вызывается автоматически при инициализации классов.

classinstance = Myclass ()

# Инициализирован класс и переменная myvariable принимает значение 3 как заявлено в методе инициализации

classinstance.myfunction(1, 2)

#Метод myfunction класса Myclass возвращает значение переменной myvariable

3

# Переменная common объявлена во всех классах

classinstance2 = Myclass ()

classinstance.common # 10

classinstance2.common # 10

# Поэтому, если изменить ее значение в классе Myclass изменятся

# и ее значения в объектах, инициализированных классом Myclass

Myclass.common = 30

classinstance.common # 30

classinstance2.common # 30

# А здесь не изменяется переменная класса. Вместо этого объявляется

# в объекте и присваивается ей новое значение

classinstance.common = 10

classinstance.common # 10

classinstance2.common # 30

Myclass.common = 50

# Теперь изменение переменной класса не коснется переменных объектов

# этого класса

classinstance.common # 10

classinstance2.common # 50

# Следующий класс является наследником класса Myclass, наследуя его

# свойства и методы, к тому же класс может наследоваться из нескольких

# классов, в этом случае запись такая: class Otherclass(Myclass1, Myclass2,

# MyclassN)

class Otherclass (Myclass):

def __init__(self, arg1):

self.myvariable = 3

print arg1

classinstance = Otherclass("hello")

hello

classinstance.myfunction(1, 2) # 3

# Этот класс не имеет совйтсва test, но мы можем

# объявить такую переменную для объекта. Причем

# эта переменная будет членом только classinstance.

classinstance.test = 10 # classinstance.test – 10

 

Исключения в Python имеют структуру try-except [exceptionname]:

def somefunction():

try:

10 / 0 # Деление на ноль вызывает ошибку

Except ZeroDivisionError:

# Но программа не "Выполняет недопустимую операцию"

# А обрабатывает блок соответствующий ошибке «ZeroDivisionError»

Print "Oops, invalid."

fnexcept ()

Oops, invalid.




Дата добавления: 2022-04-12; просмотров: 123;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.01 сек.