菜单

金沙js77888Python3上学笔记1陆-错误和充足

2019年5月17日 - 金沙编程资讯

接纳try…except能够拍卖特别

至极管理

import sys
try:
    print('try...')
    r = 10/0
    print('result:',r)
except ZeroDivisionError as e:#
    print('except:',e)
finally:
    print('finally...')
print('end')

金沙js77888 1

若果在try语句块中冒出谬误,剩下try部分剩余的语句不会延续被试行

设若不行类型和except之后的称号符合,就能够实践相应的except下的语句

假定有finally语句块,则施行finally语句块,至此,实践完结

把0改成二,由于并未有不当发生,except部分会不施行,但是finally假如有,则终将会被实践(能够未有finally语句)

 

 

抓获四个十一分

try:
    print('try...')
    r = 10/int('a')
    print('result:',r)
except ValueError as e:
    print('ValueError:',e)
except ZeroDivisionError as e :
    print('ZeroDivisionError:',e)
print('finally')

金沙js77888 2

int()函数恐怕会抛出ValueError,所以我们用二个except捕获ValueError,用另1个except捕获ZeroDivisionError

3个try语句大概有八个except子句,分别来管理不一样的那么些

 

except (RuntimeError,TypeError,NameError):
# pass

金沙国际娱乐网址,3个except子句能够而且管理八个要命,这一个特别将被放在三个括号里成为二个元组

#金沙js77888,能够在except后边加个else,当未有不当产生的时候,会自行试行else语句

for arg in sys.argv[1:]:
    try:
        f = open(arg, 'r')
    except IOError:
        print('cannot open', arg)
    else:
        print(arg, 'has', len(f.readlines()), 'lines')
        f.close()

行使 else 子句比把具有的言语都献身 try
子句里面要好,那样能够幸免有些离奇的、而except又从未捕获的那么些

 

那多少个管理并不唯有管理那个一直产生在try子句中的非常,而且还是可以管理子句中调用的函数(以致直接调用的函数)里抛出的极度

def foo(s):
    return 10 / int(s)

def bar(s):
    return foo(s) * 2

def main():
    try:
        bar('0')
    except Exception as e:
        print('Error:', e)
    finally:
        print('finally...')

澳门金沙在线投注,函数main()调用foo(),foo()调用bar(),结果bar()出错了,那时,只要main()捕获到了,就可以拍卖:

也便是说,不要求在各种大概出错的地点去捕获错误,只要在适当的层系去捕获错误就足以了。这样一来,就大大减少了写try…except…finally的辛勤

 

Python的谬误其实也是class,全体的荒谬类型都无冕自BaseException,所以在使用except时必要注意的是,它不止捕获该类型的错误,还把其子类也“毁灭罪证”

try:
    foo(2)
except ValueError as e:
    print('ValueError')
except UnicodeError as e:
    print('UnicodeError')

其次个except永世也破获不到UnicodeError,因为UnicodeError是ValueError的子类,假若有,也被第三个except给捕获了

 

抛出非常

采纳raise语句能够抛出三个点名的异常

try:
    raise NameError('HiThere')
except NameError:
    print('An exception flew by!')
    raise

raise
唯1的2个参数钦定了要被抛出的充足。它必须是1个丰裕的实例只怕是充裕的类(也正是Exception 的子类)

只想清楚这是还是不是抛出了五个可怜,并不想去管理它,那么一个轻便的 raise
语句就能够重复把它抛出

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图