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

Презентация:



Advertisements
Похожие презентации
Объектно – ориентированное программирование (ООП) Артишевская Юлия, 222 группа Артишевская Юлия, 222 группа.
Advertisements

Язык Python Универсальный язык программирования Интерпретируемый язык.
1/27 Chapter 9: Template Functions And Template Classes.
НГТУ, каф. ВТ Исключения в С++ Макаревич Л. Г.. Что такое исключение Исключение или исключительная ситуация – возникновение непредвиденных или аварийных.
Mock-объекты mock (англ.) – ложный, фиктивный, мнимый, фальшивый, поддельный.
Объектно-ориентированное программирование в Python.
Unit II Constructor Cont… Destructor Default constructor.
Обработка исключений Основы метапрограммированияОбработка исключений Основы метапрограммирования.
Saint Petersburg, 2011 Java Lecture #06 Exceptions.
1/30 Chapter 8: Dynamic Binding And Abstract classes.
Обработка исключений Гудов А.М., Завозкин С.Ю
Перегрузка операторов x = a + b результат 1-й операнд2-й операнд оператор По количеству операндов операторы делятся на: унарные (один операнд) бинарные.
Обработка исключительных ситуаций. Синтаксис try{ операторы0; } catch (ТипИсключения1 переменная1){ операторы1; } catch (ТипИсключения2 переменная2){
Who will Win in the Dash to the Finish? Click Here to Start.
If you are ready for the lesson, let's start. What kinds of schools do you know? Public school State school Boarding school All – boys school All – girls.
1 Обработка исключений в Java Одно из важнейших преимуществ Java – разработанный на уровне языка механизм обработки исключений. Исключение в Java - это.
Обработка исключительных ситуаций Исключительная ситуация (исключение) – это ошибка, возникающая во время выполнения программы. Например, ошибка работы.
1 Кубенский А.А. Функциональное программирование. Глава 4. Основы лямбда-исчисления Рекурсия в лямбда-исчислении fac = λn.(if (= n 0) 1 (* n (fac.
1 Глава 2 Введение в программирование на С Введение 2.2 Простая программа на C Program: Печатаем строку текста 2.3 Другая простая программа на C:
В С# предусмотрены средства для создания пользовательских классов-контейнеров, к внутренним элементам которых можно обращаться при помощи того же оператора.
Транксрипт:

exceptions

Exceptions(исключения) это ошибки возникающие при работе программы. Если в программе есть ошибки и они не обрабатываются, программа перестает работать Например: exceptions print(2+5) print( print(2**3) print(25%5) Ответ: File "C:/class work.py", line 4 print(25%5) ^ SyntaxError: invalid syntax

Программа может работать до ошибки либо нет. Это зависит от типа ошибки. Exceptions print(25//4) print(36%7) print(25/0) print(Exception.") Ответ: Traceback (most recent call last): 6 1 File "C:/Users/PycharmProjects/class work.py", line 3, in print(25/0) ZeroDivisionError: division by zero

Если ловим исключение, программа обработает ошибку и будет работать дальше Exception Код Ошибка Код Ошибка except Код

В питоне есть иерархия классов для обработки исключении. С помощью этих классов мы можем узнать тип исключения Иерархия исключении BaseException +-- SystemExit +-- KeyboardInterrupt +-- GeneratorExit +-- Exception +-- StopIteration +-- StopAsyncIteration +-- ArithmeticError +-- FloatingPointError +-- OverflowError +-- ZeroDivisionError

try/except exception_name try/finally try/except/else raise assert with/ as Exceptions конструкции

С помощью конструкций try/except exception_name можно обработать исключение программы. Оно состоит из двух частей: try, except. try пишется код который может вызвать ошибку. А в except пишется обработка ошибки. Пример: try/except exception_name def fetcher(obj,index): return obj[index] #returns index-th character of the object. name='Zhandos' # This string has 7 characters, so indexes in 0-6 are valid. n = fetcher(name,2) # This call will return a. print("The character with index two is",n) n = fetcher(name,7) # This call will fail, because there is no character with index 7. print("The character with index seven is",n)

Продолжение Ответ: The character with index two is a Traceback (most recent call last): File "File_example1.py", line 6, in n = fetcher(name,7) # This call will fail because there is no character with index 7 File "File_example1.py", line 2, in fetcher return obj[index] #returns index-th character of the object IndexError: string index out of range Нет индекса 7 в элементе name, IndexError это наше исключение

Продолжение Используем try/except exception_name def fetcher(obj,index): return obj[index] name='Zhandos' try: n = fetcher(name,2) print("The character with index two is",n except IndexError: print("The index requested (2) is not valid try: n = fetcher(name,7 print("The character with index seven is",n) except IndexError: print("The index requested (7) is not valid.") Ответ: The character with index two is a The index requested (7) is not valid.

Конструкция try/finally состоит из 2 частей: try, finally. В try пишется вероятно ошибочный код. finally пишется код который выполнится в любом случае. Пример: try/finally try: result="d"*"d" print(result) except(TypeError): print("Exception was raised!") finally: print("Finally clause text.") Ответ: Exception was raised! Finally clause text.

try/finally try: result="d"*"d" print(result) finally: print("Finally clause text.") Ответ: Traceback (most recent call last): File "class work.py", line 2, in result="d"*"d" TypeError: can't multiply sequence by non-int of type 'str' Finally clause text.

try/except/else: try… except... else вызывается если все ок. try/except/else

try: file=open("Абылайхан.txt","r") print(file.encoding) print(file.name) except(SyntaxError): print("You have a syntax error.") except(IOError): print("IOError exception was raised.") else: print("You have no syntax and input/output errors.") Ответ: cp1251 Абылайхан.txt You have not syntax or and input/output errors..

try/except/else try: file=open("Абылай.txt","r") print(file.encoding) print(file.name) except(SyntaxError): print("You have a syntax error.") except(IOError): print("IOError exception was raised.") else: print("You have no syntax and input/output errors.") Ответ: IOError exception was raised. Файла Абылай.txt не был найден и вышло исключение IOError.

Конструкция assert: assert condition, data. Condition - условие. Data – (string) текст. Если в конструкции assert условие False, выводит data. Если True, не выводит data. Конструкция assert

Пример class Converter: def Celsius_to_Fahrenheit(self, x): Fahrenheit=x* # Неправильная формула. Правильная: F=1.8*C+32. print("Fahrenheit:",Fahrenheit) return Fahrenheit converter_obj=Converter() result=converter_obj.Celsius_to_Fahrenheit(5) #41°F=5°C assert result==41, "Фаренгейт не правильно. Проверьте формулу" Ответ: Fahrenheit: 42.0 Traceback (most recent call last): File "C:/Users/problem2.py", line 8, in assert result==41, "Фаренгейт не правильно. Проверьте формулу." AssertionError: Фаренгейт не правильно. Проверьте формулу.

Продолжение class Converter: def Celsius_to_Fahrenheit(self, x): Fahrenheit=x* print("Fahrenheit:",Fahrenheit) return Fahrenheit converter_obj=Converter() result=converter_obj.Celsius_to_Fahrenheit(5) #41°F=5°C assert result==41, " Фаренгейт не правильно. Проверьте формулу " Ответ: Fahrenheit: 41.0

raise создает exception. Синтаксис оператора raise: 1)raise exception_class_name 2)raise exception_object_name Тоесть exception можно получить по ошибке или оператором raise Например: raise оператор print(4/0) ZeroDivisionError без raise raise ZeroDivisionError ZeroDivisionError с raise

Задание: Пользователь вводит число. Если число не в интервале [3;5] ValueError. Иначе делим на 25 синтаксис raise exception_object_name n=int(input()) value_object=ValueError() if n 5: raise value_object print(n/25)

Разработчик сам может создавать Exception. Для этого создаем класс который наследует какой либо Exception User-defined Exception

class Early(Exception): pass class Late(Exception): pass year=int(input("Enter year of independence")) answer=1991 while(year!=answer): try: if year>answer: raise Late else: raise Early except Late: print("Try again.") print("Your answer is greater than right answer") except Early: print("Try again.") print("Your answer is smaller than right answer") year=int(input("Enter year:")) print("Your answer is correct.")

answer = lambda x: x*7 s = int(input()) print(answer(s)) Лямбда функция

представление программы в виде совокупности объектов, каждый из которых является экземпляром определённого класса Объектно-ориентированное программирование

Тип данных который состоит из полей и функции class class_name: #тело класса Класс

Пример class Employee: """Common base class for all employees""" quantity_of_employees = 0 #this property identifies quantity of objects of Employee class. name="" ID=0 def __init__(self, name, salary,ID2): #this function is called constructor self.name = name self.salary = salary self.ID=ID2 Employee.quantity_of_employees += 1 def display_quantity(self): # this is one function of the class print("Total Employee %d" % Employee.quantity_of_employees) def display_employee(self): print("Name : ", self.name,", ID:",self.ID, ", Salary: ", self.salary)

Продолжение def setName(self,name): #set function for name property self.name=name def getName(self): #get function for name property return self.name def setID(self, ID): #set function for ID property self.ID = ID def getID(self): #get function for ID property return self.ID def delName(self): #this function deletes property value del self.name def delID(self): #this function deletes property value del self.ID

Объект - это экземпляр класса. Строится на основе класса. Класс это модель объекта. Объект присваивает поля класса. Объект

Пример class Car: color=" def __init__(self,color): self.color=color toyota=Car("blue") print(toyota.color) Ответ: blue Car это название класса, toyota название объекта. Даже если __init__ имя функций, мы вызываем его как Car(blue)

Чтобы создать объект на основе класса мы вызываем функцию __init__. Функция __init__ также называют конструктор. Объект

1)object_name.variable # доступ к полю 2)object_name.function # доступ к функций Доступ к полям и функциям через объект

class Car: color="" def change_color(self,new_color): self.color=new_color def __init__(self,color): self.color=color toyota=Car("blue") print(toyota.color) toyota.change_color("yellow")#меняем цвет. print(toyota.color) Ответ: blue yellow

class Car: color="" def change_color(self,new_color): self.color=new_color def __init__(self,color): self.color=color toyota=Car("blue") print(toyota.color) toyota.color="yellow" print(toyota.color) 2-пример Ответ: blue yellow