# 异常分为两种:
# 语法异常。
# name # NameError
# 语法异常。
# name # NameError
# if 3 > 2:
# print(666)
# print(333) # IndentationError
# print(666)
# print(333) # IndentationError
# 逻辑异常。
# int(input('>>>'))
# l1 = [1, 2, 3]
# print(l1[100]) # IndexError
# int(input('>>>'))
# l1 = [1, 2, 3]
# print(l1[100]) # IndexError
# dic = {'name': 'alex'}
# print(dic['age']) # KeyError
# print(666)
# print(dic['age']) # KeyError
# print(666)
# 异常处理:
# 1,if else...... 对于if语句处理异常只能处理简单的,如果考虑多个条件 不合适。
# try except ...
# try except ...
# 单支情况。 try except
# 尝试着运行try里面的代码,出现错误,按照错误类型去寻找相应的except,找到执行此except代码,然后程序继续运转。
# try:
# print(111)
# print(222)
# print(333)
# name
# l1 = [1, 2, 3]
# print(l1[100])
#
# except NameError:
# print('name is not defined')
# print(666)
# 尝试着运行try里面的代码,出现错误,按照错误类型去寻找相应的except,找到执行此except代码,然后程序继续运转。
# try:
# print(111)
# print(222)
# print(333)
# name
# l1 = [1, 2, 3]
# print(l1[100])
#
# except NameError:
# print('name is not defined')
# print(666)
# 多支情况。try except except except ....
# try:
# print(111)
# print(222)
# print(333)
# name
# l1 = [1, 2, 3]
# print(l1[100])
# dic = {'name': 'alex'}
# print(dic['age'])
#
#
# except NameError:
# print('name is not defined')
#
# except IndexError:
# print('索引超出范围....')
#
# except KeyError:
# print('没有此key...')
#
# print(666)
# print(111)
# print(222)
# print(333)
# name
# l1 = [1, 2, 3]
# print(l1[100])
# dic = {'name': 'alex'}
# print(dic['age'])
#
#
# except NameError:
# print('name is not defined')
#
# except IndexError:
# print('索引超出范围....')
#
# except KeyError:
# print('没有此key...')
#
# print(666)
# 万能处理。
# try:
# print(111)
# print(222)
# print(333)
# # name
# l1 = [1, 2, 3]
# # print(l1[100])
# dic = {'name': 'alex'}
# print(dic['age'])
#
# except Exception as e:
# print(e)
# print(666)
# print(111)
# print(222)
# print(333)
# # name
# l1 = [1, 2, 3]
# # print(l1[100])
# dic = {'name': 'alex'}
# print(dic['age'])
#
# except Exception as e:
# print(e)
# print(666)
# 万能: 如果你对错误原因不关心,只是想不让其报错,那么程序中你就用万能处理。
# 如果你对错误原因需要进行不同分流或者程序处理,那么就需要多分支。
# 如果你对错误原因需要进行不同分流或者程序处理,那么就需要多分支。
# 多分支 加 万能处理。 : 对某些错误需要进行分流处理,剩下的错误直接跳过。
# try:
# print(111)
# print(222)
# print(333)
# # name
# int(input(''))
# l1 = [1, 2, 3]
# print(l1[100])
# dic = {'name': 'alex'}
# print(dic['age'])
#
#
# except NameError:
# print('name is not defined')
#
# except IndexError:
# print('索引超出范围....')
#
# except KeyError:
# print('没有此key...')
#
# except Exception:
# pass
# print(666)
# print(111)
# print(222)
# print(333)
# # name
# int(input(''))
# l1 = [1, 2, 3]
# print(l1[100])
# dic = {'name': 'alex'}
# print(dic['age'])
#
#
# except NameError:
# print('name is not defined')
#
# except IndexError:
# print('索引超出范围....')
#
# except KeyError:
# print('没有此key...')
#
# except Exception:
# pass
# print(666)
# try except else
# 如果出现异常 就不会走else逻辑,不出现异常,则执行else逻辑。
# try:
# print(111)
# print(222)
# name
#
# except NameError:
# print('name is not defined')
#
# else:
# print(333)
# print(666)
# 如果出现异常 就不会走else逻辑,不出现异常,则执行else逻辑。
# try:
# print(111)
# print(222)
# name
#
# except NameError:
# print('name is not defined')
#
# else:
# print(333)
# print(666)
# try:
# print('二狗 向 脸哥转了 200元')
# name
# print('脸哥确认收到了 200元')
#
# except NameError:
# print('name is not defined')
#
# else:
# print('转账成功')
# print(666)
# try except else finally
# finally 无论报不报错都执行,如果报错,finally是在报错之前执行的!!!
# try:
# print('二狗 向 脸哥转了 200元')
# name
# print('脸哥确认收到了 200元')
#
# except KeyError:
# print('name is not defined')
# #
# # else:
# # print('转账成功')
# #
# finally:
# print(666)
# 文件操作:
#
# f1 = open('a.log', encoding='utf-8')
# f1.read()
# '''
# 各种对文件操作的代码,但是可能会出错,出错之后,你的文件句柄无法关闭。
# '''
# f1.close()
# 解决方案:
# try:
# f1 = open('a.log', encoding='gbk')
# f1.read()
# f1.write('sfdsf')
# '''
# 各种对文件操作的代码,但是可能会出错,出错之后,你的文件句柄无法关闭。
# '''
# finally:
# print(666)
# f1.close()
# try:
# f1 = open('a.log', encoding='gbk')
# f1.read()
# f1.write('sfdsf')
# '''
# 各种对文件操作的代码,但是可能会出错,出错之后,你的文件句柄无法关闭。
# '''
# finally:
# print(666)
# f1.close()
# finally 会在retrurn之前先执行。
# def func(a):
# try:
# a += 1
# return a
# finally:
# print(333)
#
# print(func(5))
# 以后如果遇到关闭连接,数据库连接等等。
# 自定义异常处理。
# raise
# raise 666
# python提供了大部分异常,但是不是所有,比如 大的框架的手机连接问题,网络引发的代码问题等等。
# Exception 也处理不了。
#
# EOFError
# NameError
# Exception
# Exception 也处理不了。
#
# EOFError
# NameError
# Exception
# 程序中如果出现了python解决不了的异常 比如 PhoneConnectionError
# class PhoneConnectionError(BaseException):
# pass
# try:
# raise PhoneConnectionError('类型错误')
# except PhoneConnectionError:
# print('手机连接出现问题')
# 源码中经常遇到 条件只要不成立,我就抛出错误
# assert 1 == 2
# assert 1 == 2