Python中能这么使用try语句吗?

我没见过这么用的,试了一把,能正常捕获,这用法正确吗?

try:
	print(2/0)
except Exception as e:
	try:
		print(w)
	except Exception as f:
		print(f,e)

name 'w' is not defined division by zero

Python中能这么使用try语句吗?
4 回复

可以,正常用法。JAVA 常有这么写的


在Python里,try语句的标准结构是try...except...,用来捕获和处理异常。你问“能这么使用吗?”,我猜你可能看到了像try...elsetry...finally这样的写法,或者有人把代码直接写在try块里但没配except

我直接说结论:try后面必须至少跟一个exceptfinally块,不能单独使用。 像下面这样写会直接报语法错误(SyntaxError):

try:
    x = 1 / 0
# 缺少 except 或 finally

合法的用法是:

  1. try...except...:最常用,捕获特定异常。
    try:
        result = 10 / 0
    except ZeroDivisionError:
        result = "不能除以0"
    
  2. try...except...else...else里的代码只在try块没发生异常时执行。
    try:
        value = int("123")
    except ValueError:
        print("转换失败")
    else:
        print(f"转换成功,值是 {value}")  # 仅当无异常时执行
    
  3. try...finally...:无论是否发生异常,finally里的代码都会执行,常用于清理资源(如关闭文件)。
    file = None
    try:
        file = open("somefile.txt", "r")
        data = file.read()
    finally:
        if file:
            file.close()  # 确保文件总是被关闭
    
  4. 完整形式 try...except...else...finally:可以组合使用。
    try:
        risky_operation()
    except SomeError:
        handle_error()
    else:
        print("一切正常")
    finally:
        cleanup()
    

所以,核心是try必须搭配exceptfinally使用。如果你看到其他“奇怪”的写法,那很可能就是语法错误。

总结:try不能单干,必须配exceptfinally


有点新逆天,感觉谁都挡不住 try 了

这不是正常语法吗……

回到顶部