0
点赞
收藏
分享

微信扫一扫

Python语言学习讲解十九: 异常信息的详细获取




由于近期忙着手游发布,所以这几天没有及时更新望各位学者见谅。年底了,各大公司特别是游戏行业都着手赶年底末班车,给用户一个新年的礼物。在项目中出现了一些异常日志,但是并没有记录到详细的错误信息。特别是报错在哪一个文件哪一行等信息。

[python]  view plain  copy



    1. >>> try:  
         1/0  
     except Exception,e:  
         print e
    
    
         
     integer division or modulo by zero2.


    输出结果是integer division or modulo by zero,只知道是报了这个错,但是却不知道在哪个文件哪个函数哪一行报的错。

    下面使用traceback模块

    [python]  view plain  copy

      1. >>> import traceback
       >>> try:  
           1/0  
       except Exception,e:  
           traceback.print_exc()
      
      
           
       Traceback (most recent call last):
         File "<pyshell#20>", line 3, in <module>
       ZeroDivisionError: integer division or modulo by zero2.

      输出结果是

      Traceback (most recent call last):

      File "test_traceback.py", line 3, in <module>

      1/0





      ZeroDivisionError: integer division or modulo by zero

      这样非常直观有利于调试。

      traceback.print_exc()跟traceback.format_exc()有什么区别呢?

      format_exc()返回字符串,print_exc()则直接给打印出来。

      即traceback.print_exc()与print traceback.format_exc()效果是一样的。

      print_exc()还可以接受file参数直接写入到一个文件。比如

      traceback.print_exc(file=open('tb.txt','w+'))

      写入到tb.txt文件去。

      [python]  view plain  copy

        1. >>> try:  
             1/0  
         except Exception,e:  
             print e
        
        
             
         integer division or modulo by zero2.

        输出结果是integer division or modulo by zero,只知道是报了这个错,但是却不知道在哪个文件哪个函数哪一行报的错。

        下面使用traceback模块

        [python]  view plain  copy



          1. >>> import traceback
           >>> try:  
               1/0  
           except Exception,e:  
               traceback.print_exc()
          
          
               
           Traceback (most recent call last):
             File "<pyshell#20>", line 3, in <module>
           ZeroDivisionError: integer division or modulo by zero2.





          输出结果是



          Traceback (most recent call last):



          File "test_traceback.py", line 3, in <module>

          1/0









          ZeroDivisionError: integer division or modulo by zero



          这样非常直观有利于调试。






          traceback.print_exc()跟traceback.format_exc()有什么区别呢?



          format_exc()返回字符串,print_exc()则直接给打印出来。



          即traceback.print_exc()与print traceback.format_exc()效果是一样的。



          print_exc()还可以接受file参数直接写入到一个文件。比如



          traceback.print_exc(file=open('tb.txt','w+'))



          写入到tb.txt文件去。

          举报

          相关推荐

          0 条评论