代码之家  ›  专栏  ›  技术社区  ›  Taohidul Islam

如何获取python中发生异常或错误的行号?

  •  1
  • Taohidul Islam  · 技术社区  · 7 年前

    我有一个django orm查询,如下所示:

    try:
        specialization_object = Specialization.objects.get(name="My Test Specialization")
    except Exception as ex:
        print(ex)
    

    出现异常时,它会打印“不存在专门化匹配查询”,但不会打印行号。如何跟踪发生异常或错误的行号?

    3 回复  |  直到 7 年前
        1
  •  2
  •   sudonym    7 年前

    试试这个:

    import logging
    logger = logging.getLogger(__name__)
    
    try:
        specialization_object = Specialization.objects.get(name="My Test Specialization")
    except Exception as ex:
        logger.info(ex, exc_info=True) # exc_info will add traceback
    

    进一步阅读请参见 here

        2
  •  2
  •   Lohmar ASHAR    7 年前

    如果你因为任何原因不能使用日志记录,有一个标准的包 traceback ,您可以执行以下操作:

    traceback.print_exc(file=sys.stdout)
    
        3
  •  0
  •   Taohidul Islam    7 年前

    我刚刚想出了一个简单的解决办法:

    import traceback
    try:
        specialization_object = Specialization.objects.get(name="My Test Specialization")
    except Exception as ex:
        print(traceback.format_exc())