Python学习_异常处理

版权声明:转载请注明出处 https://blog.csdn.net/nanhuaibeian/article/details/85550822

1. 异常类型

  1. AssertionError:断言语句失败
# AssertionError:断言语句失败,一般是在测试程序时置入检查点
my_list = ['love']
my_list.pop()
assert len(my_list) >0
    Traceback (most recent call last):
      File "<input>", line 1, in <module>
    AssertionError
# AttributeError:尝试访问未知的对象属性,访问不存在时抛出的异常
  1. AttributeError:尝试访问未知的对象属性
Traceback (most recent call last):
  File "<input>", line 1, in <module>
AttributeError: 'list' object has no attribute 'dog'
  1. IndexError:索引超出序列的范围
my_list=[1,2,3]
my_list[3]
#抛出的异常
    Traceback (most recent call last):
      File "<input>", line 1, in <module>
    IndexError: list index out of range
  1. KeyError:字典中查找一个不存在的关键字
my_dict = {'one':1,'two':2,'three':3}
my_dict['four']
#抛出的异常:
    Traceback (most recent call last):
      File "<input>", line 1, in <module>
    KeyError: 'four'
  1. NameError:尝试访问一个不存在的变量
# NameError:尝试访问一个不存在的变量时,抛出的异常
    Traceback (most recent call last):
      File "<input>", line 1, in <module>
    NameError: name 'c' is not defined
  1. OSError:操作系统产生的异常
# OSError:操作系统产生的异常,也称为FileNotFoundError
    FileNotFoundError: [Errno 2]
  1. SyntaxError:Python的语法错误
# SyntaxError:Python的语法错误
    SyntaxError: invalidsyntax
  1. ZeroDivisionError:除数为零
  2. TypeError:不同类型间的无效操作
  1+'2'
  #抛出的异常
        TypeError: unsupported operand type(s) for +: 'int' and 'str'

2. 异常捕获

  1. try-except语句
#格式
try:
    检测范围
except Exception[as reason]:
    出现异常后的处理代码
#示例
try:
    sum1 = 1+ '1'
    f = open('none.txt')
    print(f.read())
    f.close()

except OSError as reason:
    print('文件出错T_T\n出错的原因是:' + str(reason))

# 对多个异常统一处理
except(OSError,TypeError) :
    print('文件出错T_T')

# 当无法确定对哪一类异常进行处理时,只是希望在try语句里一旦出现任何异常,给用户一个看得懂的提醒
...
except:
    print('出错了')
...
# try语句里一旦出下异常,剩下的语句将不会执行
  1. try-finally 语句
# 如果try语句中没有出现错误,则语句会跳过except语句块执行finally语句块中的内容,若出现异常,则执行except然后执行finally
try:
    f = open('不存在的文档')
    print(f.read())
    sum = 1 + '1'
except:
    print('出错了!T_T')
# finally 语句块中的内容是无论如何都要执行的
finally:
    f.close()

3. 丰富的else语句

else语句不仅能和if语句搭配,而且也能和for语句或者while语句搭配

# 求用户输入的数的最大约数,若是素数则提醒用户
def showMaxFactor(num):
    # 地板除法:两个整数的除法仍然是整数:
    count = num // 2
    while count >1:
        if num % count == 0:
            print('%d 最大的约数是 %d' % (num,count))
            break
        count -=1
    # 如果没有遇到合适的条件,则执行else的语句内容
    else:
        print('%d 是素数!' %num)
num = int(input('请输入一个数:'))
showMaxFactor(num)

# else 语句可以与异常搭配使用,如果try语句中没有异常,则执行else中语句
try:
    a = 1
except ValueError as reason:
    print('出错了!' + str(reason))
else:
    print('没有任何异常')

4. 简洁的with语句

# 对文件操作使用with语句,不用担心出现文件打开了忘记关闭的问题(with会自动帮助关闭文件)
try:
    with open('文本.txt','r',encoding='UTF-8') as f:
        for each_line in f:
            print(each_line)
except OSError as  reason:
    print("出错了T_T\n出错的原因是:" + str(reason))

猜你喜欢

转载自blog.csdn.net/nanhuaibeian/article/details/85550822
今日推荐