You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java的try-catch结构与Python的try-except结构对比及使用疑问

Python 与 Java 异常捕获的对应实现

1. 获取异常实例对象

Python 中可以通过as关键字绑定捕获到的异常实例,对应 Java 中catch (SomeException se)里的se变量:

try:
    # 执行可能抛出异常的代码
    pass
except ExceptionClass1 as e: # e 就是捕获到的异常实例对象
    print(e) # 效果等同于 Java 中的 System.out.println(se),打印异常的描述信息

2. 打印异常堆栈跟踪

需要用到 Python 标准库的traceback模块,其中traceback.print_exc()的效果完全等同于 Java 中的se.printStackTrace():

import traceback

try:
    1 / 0 # 示例触发异常
except ZeroDivisionError as e:
    traceback.print_exc() # 直接打印完整堆栈信息到控制台
    # 若需要将堆栈信息转为字符串存储,可以用 traceback.format_exc()
    stack_info = traceback.format_exc()

3. 异常重抛操作

分为两种场景,和 Java 逻辑完全对应:

  • 原样重抛当前捕获的异常:直接写raise即可,不需要额外带参数,会保留原始异常的完整堆栈信息
  • 包装为新异常重抛:可以通过raise 新异常 from 原始异常的写法,将原始异常作为新异常的上下文抛出,对应 Java 中把原始异常作为cause包装抛出的逻辑

完整对应Java写法的Python示例

你给出的Java代码可以直接翻译为如下Python代码:

import traceback

try:
    # something bad happens here
    pass
except SomeException as se:
    traceback.print_exc() # 对应 se.printStackTrace(),打印堆栈
    print(se) # 对应 System.out.println(se),打印异常信息
    # 原样重抛
    raise se
    # 如果要包装重抛可以写:
    # raise NewException("封装异常") from se

内容的提问来源于stack exchange,提问作者user1172468

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:45:04