python中输入17=x会引起错误_Python学习17:异常处理(一)

1、try ... except ...

我们可以使用try..except语句来处理异常。我们把通常的语句放在try-块中,而把我们的错误处理语句放在except-块中。

当试图读入一个用户输入时,用户按下了Ctrl + d,Python会跑出异常

>>> try:

s = input('请输入一个字符串:')

except EOFError:

print('\nEOFError异常处理:用户输入过程产生异常')

0818b9ca8b590ca3270a3433284dd417.png

当以只读的方式打开一个不存在文件的时候会跑出IOError异常:因此:

#尝试以只读的方式打开一个不存在的文件,并进行异常处理

try:

fp = open('file.txt','r')

except IOError:

print("异常处理:打开文件file.txt失败")

#尝试以写入的方式打开一个不存在的文件,并进行异常处理

try:

fp = open('file.txt','w')

#打印一个没有定义的变量,跑出NameError异常

print(name)

except IOError:

print("异常处理:打开文件file.txt失败")

except NameError:

print('异常处理:变量name没有定义')

#在捕获的异常中处理

name = 'jiezhj'

#写入一行

fp.write(name + '\n')

fp.write(name)

fp.write(name)

fp.write(name)

fp.close()

异常的抛出机制:

1、如果在运行时发生异常,解释器会查找相应的处理语句(称为handler).

2、要是在当前函数里没有找到的话,它会将异常传递给上层的调用函数,看看那里能不能处理。

3、如果在最外层(全局“main”)还是没有找到的话,解释器就会退出,同时打印出traceback以便让用户找到错误产生的原因。

#FileName : except.py

#定义一个方法用于打开文件

def func(FileName):

try:

#以只读的方式打开文件FileName

fp = open(FileName,'r')

except NameError:

print('异常处理:函数内部异常')

except IOError:

print('func异常处理:文件hello.txt打开错误!')

#定义一个方法用于调用方法func

def callFunc():

try:

#传递文件名

func('hello.txt')

except IOError:

print('callFunc异常处理:文件hello.txt打开错误!')

callFunc()

异常被func方法中的except截获:

0818b9ca8b590ca3270a3433284dd417.png

将方法func中的异常处理注释掉之后,异常会向调用方法func的函数中抛出

#FileName : except.py

#定义一个方法用于打开文件

def func(FileName):

try:

#以只读的方式打开文件FileName

fp = open(FileName,'r')

except NameError:

print('异常处理:函数内部异常')

#将fun中的异常处理注释掉

# except IOError:

# print('func异常处理:文件hello.txt打开错误!')

#定义一个方法用于调用方法func

def callFunc():

try:

#传递文件名

func('hello.txt')

except IOError:

print('callFunc异常处理:文件hello.txt打开错误!')

callFunc()

0818b9ca8b590ca3270a3433284dd417.png

让try..catch块关联上一个else从句。当没有异常发生的时候,else从句将被执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值