Python程序设计-清华大学出版社-董付国第8章 异常处理结构与程序调试_第1页
Python程序设计-清华大学出版社-董付国第8章 异常处理结构与程序调试_第2页
Python程序设计-清华大学出版社-董付国第8章 异常处理结构与程序调试_第3页
Python程序设计-清华大学出版社-董付国第8章 异常处理结构与程序调试_第4页
Python程序设计-清华大学出版社-董付国第8章 异常处理结构与程序调试_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 10 * (1/0)Traceback (most recent call last): File , line 1, in ?ZeroDivisionError: division by zero 4 + spam*3Traceback (most recent call last): File , line 1, in ?NameError: name spam is not defined 2 + 2Traceback (most recent call last): File , line 1, in ?TypeError: Cant convert int object to st

2、r implicitlyl语法错误和逻辑错误不属于异常,但有些语法错误往往会导致异常,例如由于大小写拼写错误而访问不存在的对象。l当Python检测到一个错误时,解释器就会指出当前流已无法继续执行下去,这时候就出现了异常。异常是指因为程序出错而在正常控制流以外采取的行为。l异常分为两个阶段:第一个阶段是引起异常发生的错误;第二个阶段是检测并处理阶段。可以继承Python内置异常类来实现自定义的异常类。class ShortInputException(Exception):你定义的异常类。def _init_(self, length, atleast):Exception._init_(se

3、lf)self.length = lengthself.atleast = atleast try:s = raw_input(请输入 - )if len(s) class MyError(Exception): def _init_(self, value): self.value = value def _str_(self): return repr(self.value) try: raise MyError(2*2) except MyError as e: print(My exception occurred, value:, e.value)My exception occur

4、red, value: 4 raise MyError(oops!)Traceback (most recent call last): File , line 1, in ?_main_.MyError: oops!try.except.结构try子句中的代码块放置可能出现异常的语句,except子句中的代码块处理异常。try:try块#被监控的语句except Exception, reason:except块#处理异常的语句 while True: try: x = int(input(Please enter a number: ) break except ValueError: p

5、rint(That was no valid number. Try again.)try.except.else.语句如果try范围内捕获了异常,就执行except块;如果try范围内没有捕获异常,就执行else块。a_list = China, America, England, Franceprint 请输入字符串的序号while True:n = input( )try:print a_listnexcept IndexError:print 列表元素的下标越界,请重新输入字符串的序号else: breakfor arg in sys.argv1: try: f = open(arg,

6、 r) except IOError: print(cannot open, arg) else: print(arg, has, len(f.readlines(), lines) f.close()import systry: f = open(myfile.txt) s = f.readline() i = int(s.strip()except OSError as err: print(OS error: 0.format(err)except ValueError: print(Could not convert data to an integer.)except: print(

7、Unexpected error:, sys.exc_info()0) raisel将要捕获的异常写在一个元组中,可以使用一个excep语句捕获多个异常:import systry: f = open(myfile.txt) s = f.readline() i = int(s.strip()except (OSError, ValueError,RuntimeError, NameError): pass def divide(x, y): try: result = x / y except ZeroDivisionError: print(division by zero!) else:

8、 print(result is, result) finally: print(executing finally clause) divide(2, 1)result is 2.0executing finally clause divide(2, 0)division by zero!executing finally clause divide(2, 1)executing finally clauseTraceback (most recent call last): File , line 1, in ? File , line 3, in divideTypeError: uns

9、upported operand type(s) for /: str and strlPython2with open(d:test.txt) as f: for line in f:print linelPython3with open(myfile.txt) as f: for line in f: print(line, end=)import sys try: 1/0 except: tuple = sys.exc_info()print tuple完整/简写命令用法示例解释a(rgs) 显示当前函数中的参数b(reak) filename:lineno | function, condition b 173在173行设置断点b function在function函数第一条可执行语句位置设置断点b不带参数则列出所有断点,包括每个断点的触发次数、当前忽略计数、以及与之关联的条件b 175, condition设置条件断点,仅当condition的值为True时该断点有效cl(ear) filename:lineno | bpnumber bpnumber . cl清除所有断点cl filename:lineno删除指定文件指定行的所有断点cl 3 5 9删除第3、5、9个断点condition bpnu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论