python学习_26(异常)

异常:
try:
<语句>#可能发生异常的代码
except<名字>:
<语句>#如果在try部份引发了‘name‘异常
except<名字> as <异常参数>:
<语句>#如果引发了‘name’异常,获得附加的异常对象
else:
<语句>#如果没有异常发生
finally:
<语句>#始终都会执行的语句

嵌套异常捕获
try:
try:
1/0
except IOError:
print("IOError ")
except Exception as e:
print(e)

except不携带任何异常类型
try:
int("2.3")
except:
print("error")
else:
print("no error")

except携带多种异常类型
需要用括号
try:
int("2.3")
except (ValueError,TypeError) as e:
print(e)
else:
print("no error")

多个except
try:
int("2.3")
except ValueError as e:
print(e)

except TypeError as e:
print(e)
except Exception as e:
print(e)

else:
print("no error")

try-finally
try:
fp = open("e:\\1e.txt")
try:
content = fp.read()
print(content)
finally:
print("关闭文件")
fp.close()
except IOError:
print("没有找到文件")

文件存在

文件不存在

try-else
try:
fp = open("e:\\e.txt")
try:
content = fp.read()
print(content)
finally:
print("关闭文件")
fp.close()

except IOError:
print("没有找到文件")

else:
print("找到了文件")

try-except-else-finally
finally需要放到else的后面
try:
fp = open("e:\\e.txt")
try:
content = fp.read()
print(content)
finally:
print("关闭文件")
fp.close()

except IOError:
print("没有找到文件")

else:
print("找到了文件")

finally:
print("finally 始终都会执行")

异常可携带参数e
import traceback

try:
fp = open("e:\\eeeee.txt")

except IOError as e:
print(e)
print(traceback.print_exc())

else:
print("找到了文件")

主动抛出异常raise
#encoding=utf-8
def div(a,b):
if b == 0:
raise Exception("除数为0")
else:
return a/b

if __name__ == "__main__":
try:
res = div(2,0)
except Exception as e:
print(e)
else:
print(res)

自定义异常
#encoding=utf-8

class MyException(Exception):
def __init__(self,value):
self.value = value

if __name__ == "__main__":
try:
raise MyException("自定义异常信息")
except MyException as e:
print("捕获自定义异常",e.value)

#coding=utf-8
class ShortInputException(Exception):
‘‘‘A user-defined exception class.‘‘‘
def __init__(self, length, atleast):
Exception.__init__(self)
self.length = length
self.atleast = atleast
try:
s = input(‘Enter something --> ‘)
if len(s) < 3:
#如果输入的内容长度小于3,触发异常
raise ShortInputException(len(s), 3)
except EOFError:
print (‘\nWhy did you do an EOF on me?‘)
except ShortInputException as x:
print (‘ShortInputException: The input was of length %d, was expecting at least %d‘ % (x.length, x.atleast))
else:
print (‘No exception was raised.‘)

异常抛出机制:
1、如果在运行时发生异常,解释器会查找相应的处理语句(称为handler)。
2、要是在当前函数里没有找到的话,它会将异常传递给上层的调用函数,看看
那里能不能处理。
3、如果在最外层(全局“main”)还是没有找到的话,解释器就会退出,同时打印
出traceback以便让用户找到错误产生的原因。
注意:
虽然大多数错误会导致异常,但一个异常不一定代表错误,有时候它们只是一个
警告,有时候它们可能是一个终止信号,比如退出循环等

原文地址:http://blog.51cto.com/13496943/2316455

时间: 2024-07-31 16:50:22

python学习_26(异常)的相关文章

Python学习 之 异常

1.python中处理异常的方式 #coding:utf8 filename=raw_input("请输入你要操作的文件") try: f=open(filename) print 'hello' except IOError,msg: print "你指定的文件不存在" except NameError,msg: print "内部变量调用错误" finally: #finally try: #异常嵌套 f.close() except Nam

Python学习笔记-异常

Python的运行时错误称为异常 1.语法错误:软件的结构上有错误而导致不能被解释器解释或不能被编译器编译. 2.逻辑错误:由于不完整或不合法的输入所致,也可能是逻辑无法生存.计算或者输出结果需要的过程无法执行等. Python异常是一个对象,表示错误或意外情况 在python检测到一个错误时,将触发一个异常 1.python可以通过异常传导机制传递一个异常对象,发出一个异常情况出现的信号 2. 程序员也可以在代码中手动触发异常 python异常也可以理解为:程序出现了错误而在正常控制流以外采取

Python学习之异常重试解决方法详解

本文和大家分享的是在使用python 进行数据抓取中,异常重试相关解决办法,一起来看看吧,希望对大家学习python有所帮助. 在做数据抓取的时候,经常遇到由于网络问题导致的程序保存,先前只是记录了错误内容,并对错误内容进行后期处理. 原先的流程: defcrawl_page(url): pass deflog_error(url): pass url = "" try: crawl_page(url) except: log_error(url) 改进后的流程: attempts =

Python学习7——异常

编写程序时,通常能够区分正常和异常情况.为了处理这些异常,可在每个可能出现异常的地方都使用上条件语句,但这样大大降低了程序的可读性,那么怎么解决哪?Python提供强大的替代解决方案——异常处理机制. 1.异常是什么? Python使用异常对象来表示异常状态,并在遇到错误时引发异常,异常对象未被处理(或捕获)时,程序将终止并显示一条错误消息. >>> 1/0 Traceback (most recent call last): File "<pyshell#214>

python学习之异常

上一次说了python类和对象的对象的创建方法,今天再来说一下python中异常的使用.在编写程序的使用,程序员需要辨别事件的正常过程和异常过程.这类事件的处理可以使用条件判断语句来进行,但是这么做不仅会影响程序的执行效率和不灵活,同时也会使程序更难以阅读.另外程序员不可能将所有程序可能出现的情况都考虑完全,所以使用异常机制有其重要性也有其必要性. 正如java c++语言的try/catch在python中也有其对应的语句,try/except.具体用法如下: #!/usr/bin/env p

Python学习9——异常

Python使用异常对象来表示异常状态,并在遇到错误时引发异常. raise语句可以引发异常,将一个类或实例作为参数. >>> raise Exception #引发的是通用异常,没有指出是什么错误 Traceback (most recent call last): File "<pyshell#120>", line 1, in <module> raise Exception Exception >>> >>

Python学习记录-异常捕获

记录错误 如果不捕获错误,自然可以让Python解释器来打印出错误堆栈,但程序也被结束了.既然我们能捕获错误,就可以把错误堆栈打印出来,然后分析错误原因,同时,让程序继续执行下去. Python内置的logging模块可以非常容易地记录错误信息: # err_logging.py import logging def foo(s): return 10 / int(s) def bar(s): return foo(s) * 2 def main(): try: bar('0') except

【python学习】8.异常

[python学习]8.异常 raise Exception: 抛出指定异常 try/except: 捕捉异常 except: 第一个参数是需要捕获的异常类型,可以是多个类型组成元组,第二个参数是捕获到的异常对象, raise: 抛出已经捕获的异常 else: 当没有捕获的异常时候执行 finally: 总会被执行 def test(): try: raise Exception("test") except (Exception), e: print "Exception&

python学习------------异常以及反射

学完这一节,python基础部分就要告一段落了,期待进入新一阶段的学习,也给自己说坚持就是胜利. 一.isinstance(obj,cls) 检查obj是否是cls的对象 1.首先从学过的变量开始 a = 12 b = "bb" print isinstance(a,int) #结果是True print isinstance(a,str) #结果是False print isinstance(b,str) #结果是True print isinstance(b,int) #结果是Fa