python的try的except的一个问题

第一部分分析try和except的用法

第二部分为什么会出现那个问题?

第一部分如下:

运行python的下面这段代码:

def save():
try:
t=1/0
print("ok")
except:
print("jj")
if __name__== '__main__':
save()
input("press enter……")

运行结果是:

可知try和except的用法是:

1、只要try

这部分内容不能能运行就会运行

except

这部分的内容。

2、只要try这部分的内容可以运行就不会运行except这部分的内容。

如下:

第二部分问题:

当你第一次用pycharm运行如下代码:

filename='student.txt'
def insert():
s=[{'id':'1','name':'wuz'},"jiek"]
save(s)
def save(list):
try:
stu=open(filename,'r',encoding='utf-8') #在文件后追加信息
print("ok")
except:
stu=open(filename,'a',encoding='utf-8') #不存在则先创建
for item in list:
stu.write(str(item)+'\n')
if __name__== '__main__':
insert()
input("press enter……")

运行上面的代码,点击enter键,成功运行第一次,生成filename='student.txt'文件。

第一次运行结果:

第二次运行结果:

ok
Traceback (most recent call last):
  File "I:\1\python\pythonProject3\main.py", line 14, in <module>
    insert()
  File "I:\1\python\pythonProject3\main.py", line 4, in insert
    save(s)
  File "I:\1\python\pythonProject3\main.py", line 12, in save
    stu.write(str(item)+'\n')
io.UnsupportedOperation: not writable

为什么会产生这个问题?经分析如下:

第二次执行的是

try

这部分的内容,使用的是只读模式,没有创建文件和写入模式。所以当你执行以下

这部分内容时就报错。

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Python中的try except语句可以用于捕获和处理多个异常。可以在try语句块中包含多个可能会引发异常的语句,然后在except语句块中分别处理不同类型的异常。例如: ``` try: # 可能会引发多种异常的语句 except TypeError: # 处理类型错误异常 except ValueError: # 处理值错误异常 except: # 处理其他异常 ``` 在这个例子中,如果try语句块中的语句引发了类型错误异常,则会执行第一个except语句块中的代码;如果引发了值错误异常,则会执行第二个except语句块中的代码;如果引发了其他类型的异常,则会执行最后一个except语句块中的代码。 ### 回答2: 在Python中,我们可以使用try-except语句来捕获并处理单个或多个异常。try-except语句的基本语法如下: ``` try: # 可能会引发异常的代码块 except 异常类型1: # 处理异常类型1的代码 except 异常类型2: # 处理异常类型2的代码 ... except 异常类型n: # 处理异常类型n的代码 ``` 当程序执行到try-except语句时,首先会尝试执行try代码块中的代码。如果在执行try代码块时发生了异常,那么程序会跳过try代码块中后续的代码,并且进入与引发的异常类型相匹配的except代码块。 多个except代码块可以用来处理不同类型的异常。每个except代码块后面的异常类型可以是Python内置的异常类,如ValueError、TypeError等,也可以是自定义的异常类。当发生异常时,程序会依次检查每个except代码块,直到找到和异常类型匹配的代码块,然后执行该代码块中的异常处理逻辑。 下面是一个使用多个except代码块处理多个异常的示例: ```python try: a = 10 b = '2' c = a / int(b) d = a + c except ValueError: print("值错误:无法将字符串转换为整数。") except ZeroDivisionError: print("除数为零错误。") except TypeError: print("类型错误:两个操作数的类型不兼容。") except Exception as e: print("其他异常:", str(e)) ``` 在上述示例中,try代码块中的`c = a / int(b)`引发了两个可能的异常:ValueError和ZeroDivisionError。由于b是一个字符串,不能直接转换为整数,因此会引发ValueError;同时,如果b的值为0,那么会引发ZeroDivisionError。通过多个except代码块,我们可以分别处理这两种异常情况。 如果try代码块中引发了其他未被列出的异常,则会被最后一个except代码块捕获。最后一个except代码块可以捕获任何类型的异常,并通过`as`关键字将异常对象赋值给变量e,方便我们在异常处理逻辑中使用。 ### 回答3: Pythontry-except语句是用来捕捉和处理异常的,当我们进行某些操作时可能会发生错误,为了预防这些错误导致程序中断,我们可以使用try-except语句来捕捉异常并进行处理。在try语句中,我们可以编写可能会发生异常的代码,而在except语句中,我们可以定义多个不同类型的异常,以适应不同的错误情况。 使用多个异常可以根据不同的错误类型执行不同的操作,比如输出不同的错误信息或采取不同的处理措施。语法格式如下所示: ``` try: # 可能会发生异常的代码 except 异常类型1: # 对异常类型1的处理代码 except 异常类型2: # 对异常类型2的处理代码 ... ``` 在捕捉异常时,我们可以指定异常的类型,比如`ZeroDivisionError`、`TypeError`等,也可以捕捉所有异常,即不指定异常类型。如果指定了异常类型,当try语句中出现该类型的错误时,对应的except代码块将被执行;如果没有指定异常类型,将捕获所有可能的异常。 以下是一个示例代码,演示try-except语句捕捉并处理多个异常的情况: ```python try: num1 = int(input("请输入一个整数:")) num2 = int(input("请输入另一个整数:")) result = num1 / num2 print("结果是:", result) except ZeroDivisionError: print("除数不能为0!") except ValueError: print("输入的不是有效的整数!") except Exception as e: print("发生了一个未知错误:", str(e)) ``` 上述代码首先尝试获取用户输入的两个整数,然后计算它们的商并输出。如果用户输入的两个数中包含0,将会引发ZeroDivisionError异常,我们在except语句段中用一个print语句输出"除数不能为0!"。如果用户输入的不是有效的整数,会引发ValueError异常,我们通过except语句输出"输入的不是有效的整数!"。如果发生其他未知类型的异常,我们通过Exception类来捕获并输出具体的错误信息。 通过使用多个except语句,我们可以根据具体的异常类型有针对性地对不同的错误进行处理,提高程序的稳定性和健壮性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值