首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python3-异常处理

Intro

python标准库的每个模块都使用了异常,异常在python中除了可以捕捉错误,还有一些其他用途,如释放对象、中止循环的运用等作用。当程序中出现异常或错误时,最后的解决办法就是调试程序。

Knowledge

异常:是指程序中的例外、违例情况。

异常机制:是指当程序出现错误后,程序的处理方法,异常机制提供了程序正常退出的安全通道。当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器。

Exception类:最常用的异常类,该类包括StandardError、StopIteration、GeneratorExit、Warning等异常类。

StandardError类:错误异常,如程序出现逻辑上的错误,将引发该异常。

StopIteration类:判断循环是否执行到尾部,如循环到达尾部,而抛出该异常。

GeneratorExit类:由Generator函数引发的异常,当调用方法close()时引发该异常。

Warning类:表示程序中的代码引起的警告。

try...except语句:用于处理问题语句,捕获可能出现的异常。

try...finally语句:无论异常是否发生,finally子句都会被执行。

raise语句:显示引发异常语句。一旦执行了raise语句,raise语句后的代码将不能被执行。

自定义异常:用于描述python异常体系中没有涉及的异常情况。自定义异常必须继承Exception类,并命名以“Error”结尾,常用raise语句引发,且只能通过手工方式触发。

assert语句:用于检测某个条件表达式是否为真。又称为断言语句,即assert认为检测的表达式永远为真。

Apply

apply1:try...except语句

try:

f=open('small.txt','r')

print('读取文件')

except IOError:

print('文件不存在')

except:

print('程序异常')

apply2:try...except...else语句

try:

result=10/0

except :

print('除数不能为0')

else:

print(result)

apply3:try...except...finally语句

a=10

b=0

try:

result=a/b

except :

print('除数不能为0')

finally:

print('除数的值为%d'%b)

apply4:raise语句

b=None

try:

if b is None :

print(b)

raise NameError

print(len(b))

except TypeError :

print('除数不能为0')

apply5:自定义异常

from __future__ import division

class DivistionException(Exception):

def __init__(self,x,y):

Exception.__init__(self,x,y)

self.x = x

self.y = y

try:

x=3

y=2

print(x/y)

raise DivistionException(x,y)

except DivistionException as div:

print('DivistionException:x/y=%0.2f'%(div.x/div.y))

apply6:注释raise异常,DivistionException异常将不会被触发

from __future__ import division

class DivistionException(Exception):

def __init__(self,x,y):

Exception.__init__(self,x,y)

self.x = x

self.y = y

try:

x=3

y=2

print(x/y)

#raise DivistionException(x,y)

except DivistionException as div:

print('DivistionException:x/y=%0.2f'%(div.x/div.y))

apply7:assert语句

t='hekksf'

assert len(t)>=1

s='adsgfhgjk'

assert len(s)==1

Result

appy1:

文件不存在

apply2:

除数不能为0

apply3:

除数不能为0

除数的值为0

apply4:

None

NameError

apply5:

1.5

DivistionException:x/y=1.50

apply6:

1.5

apply7:

AssertionError

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180415G0ZQ7X00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券