首页 > 代码库 > 10、异常处理
10、异常处理
简单try块使用方法
>>> a=[0,1,2,3,4,5]>>>try:... a[10]... except IndexError:... print ‘index error~~~~‘... index error~~~~
小练习:
循环输出1~50,当键盘输入CTRL+C时,不退出程序而继续进行。
思路:当执行到第567行的时候,按下CTRL+C,程序跳到第8、9行,
然后会继续执行到10行,之后到下一循环
1 #!/usr/bin/python 2 import time 3 for i in range(50): 4 try: 5 print i 6 time.sleep(3) 7 print ‘~~~~‘ 8 except KeyboardInterrupt: 9 print ‘Do not stop me!‘10 print ‘+++++‘
小练习:多次捕获异常的例子:
try里面的num可以被外面的捕获调用,因为5~11行和12~13与外层的3、4行都是并列的,因此num也是全局变量
捕获到12行的异常后,程序就执行完了,如果不像退出,继续执行循环,则要把KeyError放到循环里面
1 #!/usr/bin/python 2 import time 3 dict={0:0,1:1,2:2,3:3,4:4,5:5} 4 input=int(raw_input(‘Please input a number:‘)) 5 try: 6 for num in range(input): 7 try: 8 print ‘number ‘,dict[num] 9 time.sleep(0.3)10 except KeyboardInterrupt:11 print ‘Do not stop me!‘12 except KeyError:13 print ‘%s not exist‘%num
小练习:raise 手动触发异常:
#!/usr/bin/pythontry: raise NameError raise IndexErrorexcept IndexError: print ‘index error!!!‘except NameError: print ‘name error!!!‘
小练习:制作自定义异常
#!/usr/bin/pythonclass myexcept(Exception): -- 定义异常 passtry: -- 触发 raise myexceptexcept myexcept: -- 捕获 print ‘My error!!!‘
小练习:else块和finally块
1、else块,代码将在try块没有异常抛出的时候执行
2、finally块,无论try块是否抛出异常,永远执行的代码(即使前面代码某处执行了sys.exit(),也就相当于退出前作的最后一件事),通常用来扫尾、关闭文件、链接等动作
3、finally要写在最后
1 #!/usr/bin/python 2 class myexcept(Exception): 3 pass 4 try: 5 pass 6 # raise myexcept 7 except myexcept: 8 print ‘My error!!!‘ 9 else:10 print ‘No exception‘11 finally:12 print ‘finally print~~~‘
小练习:
无论什么异常,都用统一捕获,在except后面留空即可:
#!/usr/bin/pythontry: pass raise Indexerror except : print ‘My error!!!‘else: print ‘No exception‘finally: print ‘finally print~~~‘
小练习:
抛出异常时带上一段话~~~
#!/usr/bin/pythonimport systry: pass raise IndexError,"line 5,please check it"except IndexError,data: print data
10、异常处理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。