while True:
x =input('Pleaes input:')
try:
x=int(x)
print('You have input {0}'.format(x))
break
except Exception as e:
print('Error.') try:
raise Exception('spam','eggs')
except Exception as inst:
print(type(inst)) #the exceptiton instance
print(inst.args) #arguments stored in .args
print(inst) #__str__ allows args to be printed dierctly.#but may be overidden in exception subclasses
x,y = inst.args #unpack args
print('x=',x)
print('y=',y) '''
如果try范围内捕获了异常,就执行except块;如果try范围内没有捕获异常,就执行else块。
'''
a_list=['China','America','England','Francce']
while True:
n=input('请输入字符串的序号')
try:
n=int(n)
print(a_list[n])
except IndexError:
print('列表元素的下标越,请重新输入字符串的序号')
else:
break #查看多个文本文件分别有多少行
import sys
for arg in sys.argv[1:]:
try:
f=open(arg,'r')
except IOError:
print(arg,'has',len(f.readlines()),'lines')
f.close() #要求用户输入整数
while True:
x = input('Please input:')
try:
x=int(x)
except Exception as e:
print('Error.')
else:
print('You have input{0}'.format(x))
break '''带多个except的try结构
try:
try块 #被监控的语句
except Exception1:
except块1 #处理异常1的语句
except Exception2:
:except块2 #处理异常2的语句
'''#例如
try:
x=input('请输入整数:')
y=input('请输入除数:')
z=float(x) / float(y)
except ZeroDivisionError:
print('除数不能为零')
except TypeError:
print('被除数和除数应为数值类型')
except NameError:
print('变量不存在')
else:
print(x,'/',y,'=',z) import sys
try:
f = open('test.txt')
s = f.readline()
i = int(s.strip())
f.close()
except OSError as err:
print('OS error:{0}'.format(err))
except ValueError:
print('Could not convert data to an integer.')
except:
print('Could not convert data to an integer.')
raise #将要捕获的异常写在一个元组中,可以使用一个except语句捕获多个异常
import sys
try:
f = open('test.txt')
s = f.readline()
i = int(s.strip())
f.close()
except (OSError,ValueError,RuntimeError,NameError):
pass '''
try...except...finally结构
在该结构中,finally子句中的内存无论是否发生异常都会执行,常用来做一些清理工作以释放ttry子句中申请的资源
'''
try:
3/0
except:
print(3)
finally:
print(5) #使用异常处理结构保证文件呢总能关闭
'''如果try子句中的异常没有被处理,或者在except子句或else子句中出现了异常,那么这些异常
将会在finally子句执行完成后再次抛除,例如
try:
3/0
finally:
print(5)
'''
try:
f = open('test.txt','r')
line = f.readline()
print(line)
finally:
f.close() '''使用带finally子句的异常处理结构时,应尽量避免在finally子句中使用return语句,否则
可能出现出乎意料的错误'''
def demo_div(a,b):
try:
return a/b
except:
pass
finally:
return -1
demo_div(1,0)
# -1
demo_div(1,2)
# -1 '''try...except...except...else...finally结构'''
def div(x,y):
try:
print(x/y)
except ZeroDivisionError:
print('ZeroDivisionError')
except TypeError:
print('TypeError')
else:
print('No Error')
finally:
print('executing finally clause') '''断言与上下文管理是两种比较特殊的异常处理方式,在形式上比异常处理结构要简单一些。
断言语句的语法是:
assert expression[,reason]
1.当判断表达式expression为真时,什么都不做,如果表达式为假,则抛出异常
2.assert语句一般用于开发程序时对特定必须满足的条件进行验证,仅当__debug__为True时有效.
当Python脚本以-O选项编译为字节码文件时,assert语句将被移除以提高运行速度。
'''
a = 3
b = 5
assert a==b,'a must be equal to b' '''上下文管理语句
1.使用with自动关闭资源,可以在代码块执行完毕后还原进入该代码块时的现场
2.不论何种原因跳出with块,不论是否发生异常,总能保证文件被正确关闭,资源被正确释放
'''
with open('sample.txt') as f:
for line in f:
print(line,end='')
'''
当发生异常时,Python会回溯异常,给出大量的提示,可能会给程序员定位和纠错带来一定的困难,
这时可以使用sys模块来回溯最近一次异常
example:
'''
import sys
try:
block
except:
tuple = sys.exc_info()
#sys.exc_info()的返回值是一个三元组(type,message,trackback)
#type:异常的类型 value/message:异常的信息或者参数 traceback:包含调用栈信息的对象
#可以直接定位最终引发异常的原因,结果也比较简洁,但是缺点是难以直接确定引发异常的代码位置。
print(tuple) import pdb
'''
1.pdb是Python自带的交互式源代码调试模块,代码文件为pdb.py,但需要导入后才能使用其中的功能,
使用该模块可以完成代码调试的绝大部分功能,包括设置/清除(条件)断点、启用/禁用断点、单步执行
查看栈帧、查看变量值、查看当前执行位置、列出源代码、执行任意Python代码或表达式等等
2.pdb还支持事后调试,可在程序控制下被调用。
3.可以通过pdb和cmd接口对该调试器进行扩展。
''' #pdb模块用法主要有三种:
#1.在交互模式下调试语句快、表达式、函数等多种脚本。
# (1)pdb.run(statement[,globals[,locals]]):调试指定语句,可选参数globals和locals用来指定代码执行的坏境,默认是__main__模块的字典
# (2)pdb.runeval(expression[,globals[,locals]):返回表达式的值,其他与run函数一样.
# (3)pdb.runcall(function[,argument,...]):调试指定函数
# (4)pdb.post_mortem([traceback]):进入指定trackback对象的时候调试模式,如果没有指定traceback对象,则使用当前正在处理的一个异常
import pdb
def f():
x = 5
print(x)
pdb.runcall(f) #2.在程序中嵌入调试功能
#(1)在程序中首先导入pdb模块,然后使用pdb.set_trace()在需要的位置设置断点。
#(2)在命令提示符环境下执行该程序或双击执行程序时自动打开pdb调试环境,即使该程序当前不处于调试状态。
import pdb
n = 37
pdb.set_trace() #插入断点
for i in range(2,n):
if n%i == 0:
print('No')
break
else:
print('Yes') #3.使用命令行调试程序
#在命令行提示符下执行'pythhon -m pdb脚本文件名',则直接进入调试环境:
#当调试结束或程序正常结束以后,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. android 加载图片oom若干方案小结

    本文根据网上提供的一些技术方案加上自己实际开发中遇到的情况小结. 众所周知,每个Android应用程序在运行时都有一定的内存限制,限制大小一般为16MB或24MB(视手机而定).一般我们可以通过获取当 ...

  2. C#之结尾篇

    在Top10语言中,C#是最优美的语言,没有之一,在Top10语言中,C#所可用的标准库及可获得其他库是最强大的之一,这个必须带上之一,因为有java在,在Top语言中,C#语言是性能最高的语言之一, ...

  3. 【Android 应用开发】Android屏幕适配解析 - 详解像素,设备独立像素,归一化密度,精确密度及各种资源对应的尺寸密度分辨率适配问题

    . 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19698511 . 最近遇到了一系列的屏幕适配问题, 以及 ...

  4. 停止预览时调用Camera.release(), 出现Method called after release()异常问题原因及解决办法

    如下代码: private void stopPreview() { Log.w(TAG, "stopPreview(), _isPreviewing = " + _isPrevi ...

  5. 【数值分析】误差的分析与减少及Matlab解线性方程的四种方法

    1.误差的来源 模型误差:数学模型与实际问题之间的误差 观测误差:测量数据与实际数据的误差 方法误差:数学模型的精确解与数值方法得到的数值解之间的误差:例如 舍入误差:对数据进行四舍五入后产生的误差 ...

  6. ITU-T Technical Paper: 测量QoS的基本网络模型

    本文翻译自ITU-T的Technical Paper:<How to increase QoS/QoE of IP-based platform(s) to regionally agreed ...

  7. Effective C++总结

    条款01:视C++为一个语言联邦(View C++ as a federation of languages.) C++主要的四个次语言: (1)C.说到底C++仍是以C为基础:(2)Object-O ...

  8. LeetCode之“动态规划”:Unique Binary Search Trees && Unique Binary Search Trees II

    1. Unique Binary Search Trees 题目链接 题目要求: Given n, how many structurally unique BST's (binary search ...

  9. Android BLE与终端通信(四)——实现服务器与客户端即时通讯功能

    Android BLE与终端通信(四)--实现服务器与客户端即时通讯功能 前面几篇一直在讲一些基础,其实说实话,蓝牙主要为多的还是一些概念性的东西,当你把概念都熟悉了之后,你会很简单的就可以实现一些逻 ...

  10. hbase thrift 定义

    /*  * Licensed to the Apache Software Foundation (ASF) under one  * or more contributor license agre ...