1. while True:
  2. x =input('Pleaes input:')
  3. try:
  4. x=int(x)
  5. print('You have input {0}'.format(x))
  6. break
  7. except Exception as e:
  8. print('Error.')
  9.  
  10. try:
  11. raise Exception('spam','eggs')
  12. except Exception as inst:
  13. print(type(inst)) #the exceptiton instance
  14. print(inst.args) #arguments stored in .args
  15. print(inst) #__str__ allows args to be printed dierctly.#but may be overidden in exception subclasses
  16. x,y = inst.args #unpack args
  17. print('x=',x)
  18. print('y=',y)
  19.  
  20. '''
  21. 如果try范围内捕获了异常,就执行except块;如果try范围内没有捕获异常,就执行else块。
  22. '''
  23. a_list=['China','America','England','Francce']
  24. while True:
  25. n=input('请输入字符串的序号')
  26. try:
  27. n=int(n)
  28. print(a_list[n])
  29. except IndexError:
  30. print('列表元素的下标越,请重新输入字符串的序号')
  31. else:
  32. break
  33.  
  34. #查看多个文本文件分别有多少行
  35. import sys
  36. for arg in sys.argv[1:]:
  37. try:
  38. f=open(arg,'r')
  39. except IOError:
  40. print(arg,'has',len(f.readlines()),'lines')
  41. f.close()
  42.  
  43. #要求用户输入整数
  44. while True:
  45. x = input('Please input:')
  46. try:
  47. x=int(x)
  48. except Exception as e:
  49. print('Error.')
  50. else:
  51. print('You have input{0}'.format(x))
  52. break
  53.  
  54. '''带多个except的try结构
  55. try:
  56. try块 #被监控的语句
  57. except Exception1:
  58. except块1 #处理异常1的语句
  59. except Exception2:
  60. :except块2 #处理异常2的语句
  61. '''#例如
  62. try:
  63. x=input('请输入整数:')
  64. y=input('请输入除数:')
  65. z=float(x) / float(y)
  66. except ZeroDivisionError:
  67. print('除数不能为零')
  68. except TypeError:
  69. print('被除数和除数应为数值类型')
  70. except NameError:
  71. print('变量不存在')
  72. else:
  73. print(x,'/',y,'=',z)
  74.  
  75. import sys
  76. try:
  77. f = open('test.txt')
  78. s = f.readline()
  79. i = int(s.strip())
  80. f.close()
  81. except OSError as err:
  82. print('OS error:{0}'.format(err))
  83. except ValueError:
  84. print('Could not convert data to an integer.')
  85. except:
  86. print('Could not convert data to an integer.')
  87. raise
  88.  
  89. #将要捕获的异常写在一个元组中,可以使用一个except语句捕获多个异常
  90. import sys
  91. try:
  92. f = open('test.txt')
  93. s = f.readline()
  94. i = int(s.strip())
  95. f.close()
  96. except (OSError,ValueError,RuntimeError,NameError):
  97. pass
  98.  
  99. '''
  100. try...except...finally结构
  101. 在该结构中,finally子句中的内存无论是否发生异常都会执行,常用来做一些清理工作以释放ttry子句中申请的资源
  102. '''
  103. try:
  104. 3/0
  105. except:
  106. print(3)
  107. finally:
  108. print(5)
  109.  
  110. #使用异常处理结构保证文件呢总能关闭
  111. '''如果try子句中的异常没有被处理,或者在except子句或else子句中出现了异常,那么这些异常
  112. 将会在finally子句执行完成后再次抛除,例如
  113. try:
  114. 3/0
  115. finally:
  116. print(5)
  117. '''
  118. try:
  119. f = open('test.txt','r')
  120. line = f.readline()
  121. print(line)
  122. finally:
  123. f.close()
  124.  
  125. '''使用带finally子句的异常处理结构时,应尽量避免在finally子句中使用return语句,否则
  126. 可能出现出乎意料的错误'''
  127. def demo_div(a,b):
  128. try:
  129. return a/b
  130. except:
  131. pass
  132. finally:
  133. return -1
  134. demo_div(1,0)
  135. # -1
  136. demo_div(1,2)
  137. # -1
  138.  
  139. '''try...except...except...else...finally结构'''
  140. def div(x,y):
  141. try:
  142. print(x/y)
  143. except ZeroDivisionError:
  144. print('ZeroDivisionError')
  145. except TypeError:
  146. print('TypeError')
  147. else:
  148. print('No Error')
  149. finally:
  150. print('executing finally clause')
  151.  
  152. '''断言与上下文管理是两种比较特殊的异常处理方式,在形式上比异常处理结构要简单一些。
  153. 断言语句的语法是:
  154. assert expression[,reason]
  155. 1.当判断表达式expression为真时,什么都不做,如果表达式为假,则抛出异常
  156. 2.assert语句一般用于开发程序时对特定必须满足的条件进行验证,仅当__debug__为True时有效.
  157. 当Python脚本以-O选项编译为字节码文件时,assert语句将被移除以提高运行速度。
  158. '''
  159. a = 3
  160. b = 5
  161. assert a==b,'a must be equal to b'
  162.  
  163. '''上下文管理语句
  164. 1.使用with自动关闭资源,可以在代码块执行完毕后还原进入该代码块时的现场
  165. 2.不论何种原因跳出with块,不论是否发生异常,总能保证文件被正确关闭,资源被正确释放
  166. '''
  167. with open('sample.txt') as f:
  168. for line in f:
  169. print(line,end='')
  170. '''
  171. 当发生异常时,Python会回溯异常,给出大量的提示,可能会给程序员定位和纠错带来一定的困难,
  172. 这时可以使用sys模块来回溯最近一次异常
  173. example:
  174. '''
  175. import sys
  176. try:
  177. block
  178. except:
  179. tuple = sys.exc_info()
  180. #sys.exc_info()的返回值是一个三元组(type,message,trackback)
  181. #type:异常的类型 value/message:异常的信息或者参数 traceback:包含调用栈信息的对象
  182. #可以直接定位最终引发异常的原因,结果也比较简洁,但是缺点是难以直接确定引发异常的代码位置。
  183. print(tuple)
  184.  
  185. import pdb
  186. '''
  187. 1.pdb是Python自带的交互式源代码调试模块,代码文件为pdb.py,但需要导入后才能使用其中的功能,
  188. 使用该模块可以完成代码调试的绝大部分功能,包括设置/清除(条件)断点、启用/禁用断点、单步执行
  189. 查看栈帧、查看变量值、查看当前执行位置、列出源代码、执行任意Python代码或表达式等等
  190. 2.pdb还支持事后调试,可在程序控制下被调用。
  191. 3.可以通过pdb和cmd接口对该调试器进行扩展。
  192. '''
  193.  
  194. #pdb模块用法主要有三种:
  195. #1.在交互模式下调试语句快、表达式、函数等多种脚本。
  196. # (1)pdb.run(statement[,globals[,locals]]):调试指定语句,可选参数globals和locals用来指定代码执行的坏境,默认是__main__模块的字典
  197. # (2)pdb.runeval(expression[,globals[,locals]):返回表达式的值,其他与run函数一样.
  198. # (3)pdb.runcall(function[,argument,...]):调试指定函数
  199. # (4)pdb.post_mortem([traceback]):进入指定trackback对象的时候调试模式,如果没有指定traceback对象,则使用当前正在处理的一个异常
  200. import pdb
  201. def f():
  202. x = 5
  203. print(x)
  204. pdb.runcall(f)
  205.  
  206. #2.在程序中嵌入调试功能
  207. #(1)在程序中首先导入pdb模块,然后使用pdb.set_trace()在需要的位置设置断点。
  208. #(2)在命令提示符环境下执行该程序或双击执行程序时自动打开pdb调试环境,即使该程序当前不处于调试状态。
  209. import pdb
  210. n = 37
  211. pdb.set_trace() #插入断点
  212. for i in range(2,n):
  213. if n%i == 0:
  214. print('No')
  215. break
  216. else:
  217. print('Yes')
  218.  
  219. #3.使用命令行调试程序
  220. #在命令行提示符下执行'pythhon -m pdb脚本文件名',则直接进入调试环境:
  221. #当调试结束或程序正常结束以后,pdb将重新启动程序:

Python_异常处理结构与调试的更多相关文章

  1. [Python学习笔记][第八章Python异常处理结构与程序调试]

    1/30 第八章Python异常处理结构与程序调试 异常处理 try-except结构 try: try块 except Exception: except块 try-except-else结构 tr ...

  2. 零基础学Python--------第9章 异常处理及程序调试

    第9章 异常处理及程序调试 9.1 异常概述 在程序运行过程中,经常会遇到各种各样的错误,这些错误统称为“异常”.这些异常有的是由于开发者将关键字敲错导致的,这类错误多数产生的是SyntaxError ...

  3. python:异常处理及程序调试

    1.异常概述 在程序运行过程中,经常会遇到各种各样的错误.这些错误统称为“异常”,在这些一场中有的是由于开发者将关键词写错导致,这类错误产生的是SyntaxError.invalid syntax(无 ...

  4. JAVA WEB快速入门之从编写一个JSP WEB网站了解JSP WEB网站的基本结构、调试、部署

    接上篇<JAVA WEB快速入门之环境搭建>,在完成了环境搭建后(JDK.Tomcat.IDE),现在是万事具备,就差写代码了,今天就来从编写一个JSP WEB网站了解JSP WEB网站的 ...

  5. 笔记:Python异常处理与程序调试

    Python异常处理与程序调试 Python提供了强大的异常处理机制,通过捕获异常可以提高程序的健壮性.异常处理还具有释放对象,中止循环的运行等作用.在程序运行的过程中,如果发生了错误,可以返回事先约 ...

  6. Python_异常处理、调试

    1.try except 机制 # 错误处理 # 一般程序都要用到错误捕获,当没有加且有错误的时候Python解释器会执行错误捕获,且是一层层向上捕获[所以问题点会在最下面] try: print(' ...

  7. arm 异常处理结构

    概念:正常的程序执行过程中发生暂时的停止称为异常,如果发现异常情况,将会进行异常处理 作用:快速响应用户的行为,提高cpu的响应能力 异常类型: 异常处理的三个步骤: 1.保护现场: 工作模式保存:C ...

  8. Python异常处理机制、调试、测试

    类似于Java的try..catch..finally Java的为try_except_finally try: print('try...') r = / print('result:', r) ...

  9. python_异常处理_断言

    一.Python标准异常 常用异常 Exception 常规错误的基类 AttributeError 试图访问一个对象没有的属性 IOError 输入/ 输出异常,基本上是无法打开文件 ImportE ...

随机推荐

  1. Cocos2D场景中对象引用为nil时的判断

    如果该对象在SpriteBuilder中属性中设置了name,则检查是否 [self.scene getChildByName:@"theNameOfTheNode" recurs ...

  2. Adobe Premiere 基本使用

    第一节   Premiere概述 1.1概述 Premiere是Adobe公司出品的一款用于进行影视后期编辑的软件,是数字视频领域普及程度最高的编辑软件之一.对于学生媒体而言,Premiere完全可以 ...

  3. Boosting 和梯度Boosting

    Boosting方法: Boosting这其实思想相当的简单,大概是,对一份数据,建立M个模型(比如分类),一般这种模型比较简单,称为弱分类器(weak learner)每次分类都将上一次分错的数据权 ...

  4. 滑动UITableViewCell出现多个按钮

    iOS > = 5.0使用第三方效果图 iOS> = 8.0使用系统方法效果图 MGSwipeTableCell(Github上的三方库)- iOS >= 5.0 直接使用比较简单 ...

  5. saiku应用的调试

    ubuntu下解压saiku包后使用: 运行.sh命令(.bat是windows命令).运行时注意权限.可以先chmod a+x *.sh 提示,catali?.sh出错. 这是tomcat的一个文件 ...

  6. 苹果新的编程语言 Swift 语言进阶(十五)--协议

    协议定义了适合某个特定任务或功能需要的方法.属性和其它需求的一个蓝图.协议本身不提供这些需求的实现,它只是描述了一个任务或功能实现的蓝图. 协议与java 语言中的接口定义类似,都是描述了一个实现可以 ...

  7. How to Send an Email Using UTL_SMTP with Authenticated Mail Server

    In this Document   Goal   Solution   References APPLIES TO: PL/SQL - Version 9.2.0.1 to 12.1.0.1 [Re ...

  8. Android实训案例(五)——四大组件之一ContentProvider的使用,通讯录的实现以及ListView的优化

    Android实训案例(五)--四大组件之一ContentProvider的使用,通讯录的实现 Android四大组件是啥这里就不用多说了,看图吧,他们之间通过intent通讯 我们后续也会一一的为大 ...

  9. redis注册成window服务

    注册服务 redis-server.exe –service-install redis.windows.conf 删除服务 redis-server –service-uninstall 开启服务 ...

  10. JS实现鼠标滚动事件,兼容IE9,FF,Chrome.

    <!-- 废话不多说,直接贴代码 --><script type="text/javascript" src="jquery.min.js"& ...