Обработка исключений для основных объектов Python

. Признать ненормальным

1. Ниже приведены общие типы ошибок , данные исключения :

индекс последовательности IndexError вне диапазона

KeyError ключ словаря не существует

Он NameError пытается получить доступ к переменной, которая не существует

Ошибки отступа IndentationError

AttributeError пытаются получить доступ неизвестных свойств объекта

StopIteration итератор не больше значения

AssertionError утверждение (утверждают) неспособность

EOFError пользовательский ввод конец файла маркер EOF (Ctrl + D)

FloatingPointError ошибка вычисления с плавающей точкой

GeneratorExit generator.close () метод вызывается, когда

Модуль импорта потерпели неудачу, когда ImportError

KeyboardInterrupt пользовательского ввода прерывание ключа (CTRL + C)

MemoryError переполнения памяти (может освободить память, удалив объекты)

Методы NotImplementedError невыполненным

Аномалии (например, открыть файл, который не существует) операционной системы производится OSError

Превышает расчет OverflowError максимального предельного значения

ReferenceError слабая ссылка (слабая ссылка) была восстановлена ​​при попытке доступа к объектам сбора мусора

RuntimeError ошибка общего времени выполнения

синтаксические ошибки SyntaxError Python

TabError Tab и пространства смешивания

Системная ошибка компилятора SystemError Python

Процесс компилятор Python SystemExit закрыт

Неправильное действие между различными типами TypeError

UnboundLocalError доступа неинициализированный локальные переменные (NameError подкласс)

ошибки, связанные с UnicodeError Unicode (ValueError подкласс)

Ошибка UnicodeEncodeError Юникода (а UnicodeError подкласс) для кодирования

Ошибка UnicodeDecodeError Юникода (а UnicodeError подкласс) при декодировании

UnicodeTranslateError Юникод ошибка (а UnicodeError подкласс), когда преобразование

Недопустимый параметр передается ValueError

ZeroDivisionError деление на ноль

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

# (1) IndexError индекс последовательности из диапазона
# ЛСТ = [1,2,3,4,5]
# RES = ЛСТ [999]

# (2) KeyError ключа поиска словаря не существует
DIC = { «а ':. 1,' B ': 2,' C «:. 3}
# печати (ДВС - синдром [ "D"])

(. 3) # NameError пытаются получить доступ к несуществующей переменной
#Print (HHH)

(. 4) # IndentationError отступом ошибка
ПЧ 5 == 5:..
    Печать (55)
  # печати (444)


(5) . # пытается получить доступ к объекту расположения AttributeError атрибута
класса MyClass ():
    . а = 5
    B = 6.
OBJ = MyClass ()
# obj.c


# (6. ) не StopIteration итератор не больше значения
= иТЭР (Диапазон (3))
для я в IT:
    Печать (I)
#res = Следующий (IT)

# (7) AssertionError утверждение (утверждает) не
'' '
# догадки 3 больше 1 догадка? Если 3 больше 1
# Если вы угадаете неправильно,Прямые Броски
# обычно используется в программе испытаний
''»
#Assert 3 <1

"" "
если 3 <1:
   печать ( "成立")

"""

Два . Исключение обработки базовой грамматики

# Формат: попробуйте:     code1     code2     ... кроме:     code1     code2 возможный ненормальный код в попытке этот блок кода их , если есть исключительная ошибка , перейти непосредственно execpt этот блок кода









# (1) Базовый синтаксис обработки исключений

Пример ## 1:.
Попробовать:
    LST = [. 1, 2 ,. 3 ,. 4]
    Print (LST [9999]) , потому что есть список всех # 9999, программа содержит ошибки все
, кроме информации :
    Print ( "Эта программа имеет ошибку")
    # Pass

процесс # исключения (2) отделение условие execpt +  исключение ошибки категория специфичная для данного исключения возникает ошибка , возьмите ветви # Пример 2: на попытку:     # следующего (1) (2) (3) один к одному, к в противном случае удалить комментарий , соответствующий комментарий будет идти до нужного номера программы     # (. 1)     # ЛСТ = [1,2,3,45,6]     # Печать (ЛСТ [10])     # (2)     # = {DIC 'а' :. 1}       # Выводим (DIC [ 'B'])     # (3.)     Печать (HH) , кроме информации IndexError:     (. 1) #     Print ( «пришел сюда описанная индекс индекс сообщили оценки погрешности . «) , кроме информации KeyError:     # (2)     Печать (» иди сюда, указывая , что доклад представляет собой словарь ключевых ошибок «) происходит , за исключением:
 







    



    










    # (3)
    # условия не будут выполнены, филиал идти за исключением
    печати ( «Ошибка программы»)

# (3) с оценками итераторы ошибок по классу исключений , функция генератора приемника возвращает возвращаемое значение ## Пример 3: DEF mygen ():     . выход 1     выход 2     . 3 возврата # пример генерирования генерирования метаплазии генератора функции генератора объекта называют GENL = mygen () попробовать:     RES = Следующий (GENL)     RES = Следующий (GENL)     RES = Следующий (GENL) выход # только в два раза, третий раз назвать все ошибки     печати (RES) # и во время для имени, дать класс StopIteration [цель] из названия , кроме информации StopIteration , как E:     «» ' ,     когда мы выводим объект, вызвав __str_ _ метод магии ,     в котором StopIteration этот класс, автоматически возвращает значение возврата полученного ненормальной     инициирующего метода __str__ целевой печати и , таким образом , возвращаемое значение печати     «» '     Print (E)




















Три . Активная выброшен  Рейз
исключения BaseExcepton является родителем всех классов (базовый класс, суперкласс) (псевдоним подклассов:  производный класса производного класса ) Исключение является родителем всех нормального класс обработки ошибок рейза + ( класс Exception или объекты обработки исключений ) # формат : Пробный:     поднимание за исключением:     Pass 

  





# Возвращающие .Exception является BaseException подкласс
RES = issubclass (Exception, BaseException)
Печать (RES)
Основной формат # (1) поднять синтаксис
# полный письменный
попробовать:
    # должны быть встроены в код внутри попытаться
    поднимание BaseException
за исключением:
    печать ( «эта программа выдает исключение»)

# стенографии
«» «
попробовать:
    поднимание за
исключением:
    печати („программа генерирует исключение“)

» «»
# (2) пользовательский класс исключения
# return_errorinfo должно полагаться на исключении получить форму , чтобы вызвать номер текущей строки или имя файла
DEF return_errorinfo (n-):
    Импорт SYS
    е = sys.exc_info () [2] .tb_frame.f_back
    Если п - == 1:
        возвращение ул (f.f_lineno) # возвращает текущую строку номер
    Элиф п - == 2:
        возвращение f.f_code.co_filename # Возвращает имя файла

Защита get_info (п):
    Попробовать:
        Рейз BaseException
    кроме:
        обратный return_errorinfo (n-)

# Если вы хотите пользовательский класс исключения должен наследовать все исключения родительского BaseException
класса MyException (BaseException):
    DEF __init __ (Self, err_num, ERR_MSG, err_line, err_filename):
        # Печать номер ошибка
        self.err_num = err_num
        # выводит сообщение об ошибке
        self.err_msg = ERR_MSG
        # печати номер строки ошибки
        self.err_line = err_line
        # печать файлов ошибки
        self.err_filename = err_filename

human_sex = "нейтральные"

пробные:
    IF human_sex == «в секс ":
        рейз MyException (1001,". человек не нейтрален», то get_info (1), то get_info (2))
, кроме информации MyException AS E:
    # ошибки печати номера
    печати (e.err_num)
    # Выводим сообщение об ошибке
    печати (e.err_msg)
    # номер строки ошибка печати
    Print (e.err_line)
    # Выводим файл ошибки
    печати (e.err_filename)

 

Добавить что - то :

попробуйте ... наконец .... использовать пробное:     Print (имя) # или не ошибка , будет выполнено , наконец , внутри блока кода , наконец:     Pass , если есть некоторые заявления, рассчитанные в случае отправки ошибки по- прежнему хотят , чтобы позвонить или иметь дело с какими - то логиками так используя наконец # Пример: # Пытаться: # Печать (имя) # # окончательно: # Печать (123) # печати (456) попробовать блок кода , если есть ошибки, содержание не выполняются еще код , если нет ошибок, то не исполнить ELSE содержание блока попробовать execpt ... еще ... еще не может быть использован в сочетании с раздельным и попробовать использовать. попробовать ... может быть установлен вместе с использованием наконец .... попробовать ... еще ... execpt использование попробовать :     #Print (имя)     Печать (123) , кроме информации :     Передайте еще:     Печать (789) 
































 

рекомендация

отwww.cnblogs.com/hszstudypy/p/10964102.html