在写代码里非常多的时候我会遇到处理异常的情况,为了保证程序遇到异常能够快速处理,今天我需要整理写一下处理异常的笔记:
- 基本try - except 语句
- 捕捉特定异常:except XXX :
- else子句
- finlly子句
- 使用异常对象: except XXX as xx :
- 抛出异常: raise XXX
- 断言 accert
基本try-except语句
try: n = int(input("请输入一个正整数:")) print("the number is %d" % n) except: print("NONONO,the number is not > 0")
捕捉特定异常 / 使用异常对象
#捕捉Type异常 try: n = input("请输入一个正整数:") print("the number is %d" % n) except TypeError: print("tpye is not right!!") >>>请输入一个正整数:1 tpye is not right!! #使用ValueError异常 try: n = int(input("请输入一个正整数:")) print("the number is %d" % n) except ValueError as err: print("NONONO,you have a error:",err) >>>请输入一个正整数:1.1 NONONO,you have a error: invalid literal for int() with base 10: '1.1' #invalid literal for int() with base 10: '1.1' 这一段就是err的内容
else子句
''' 不发生异常,我们往往会希望执行一些额外的代码,这可以通过 else 子句轻松地实现 ''' try: n = int(input("请输入一个正整数:")) except ValueError as err: print("NONONO,you have a error:",err) #以上的问题则执行 else: print("okok!!") print("the number is %d" % n)
finlly子句
''' 无论什么情况,finally子句都会被执行,通常用于释放外部资源。一旦使用,无论文件是否打开成功,都必须清理资源。所以,在finally
子句中使用close()
,可以确保即使发生异常,文件也能够被关闭. 例如,操作一个文件: ''' try: f = open("C:\Users\BEAR\Desktop\Training\kk.txt") while True: s = input() if s.upper() == "Q":break f.write(s+" ") except Keyboardinterrupt as ke : print("按Ctrl+c快捷键程序终止:",ke) finally: print('正常关闭文件~') f.close()
强行抛出异常 / 自定义异常
''' 强行抛出异常 当程序出现错误,python会自动引发异常,也可以通过 raise 强制引发异常。一旦执行了raise 语句,raise后面的语句将不能执行。 强行抛出内建异常 ''' def print_num(num): if(num > 5 or num < 1): raise NameError #没错,在这里 print("num:{0}".format(num)) print_num(2) try: print_num(6) except NameError: print('NONONO!Name Error') #输出 num:2 NONONO!Name Error
''' 自定义异常 如果要抛出自定义异常,首先根据需要,可以定义一个异常的class,选择好继承关系,然后,用raise语句抛出一个异常的实例。 ''' #创建一个numError继承异常的基类 class numError(Exception): def __init__(self, data): self.data = data def print_num(num): if (num > 5 or num < 1): raise numError("error!!!!!!!!!") #没错,在这里 print("num:{}".format(num)) print_num(0) #输出 raise numError("error!!!!!!!!!")
断言
''' 断言 accert 一般用于程序中置入检查 ''' #后面条件为真,程序继续 accert 4 > 3 #后面条件为假,程序自爆 accert 3 > 4