Python: Getting the error message of an exception

后端 未结 4 1476
孤独总比滥情好
孤独总比滥情好 2021-01-03 17:40

In python 2.6.6, how can I capture the error message of an exception.

IE:

response_dict = {} # contains info to response under a django view.
try:
           


        
相关标签:
4条回答
  • 2021-01-03 18:18

    This works for me:

    def getExceptionMessageFromResponse( oResponse ):
        #
        '''
        exception message is burried in the response object,
        here is my struggle to get it out
        '''
        #
        l = oResponse.__dict__['context']
        #
        oLast = l[-1]
        #
        dLast = oLast.dicts[-1]
        #
        return dLast.get( 'exception' )
    
    0 讨论(0)
  • 2021-01-03 18:25

    Pass it through str() first.

    response_dict.update({'error': str(e)})
    

    Also note that certain exception classes may have specific attributes that give the exact error.

    0 讨论(0)
  • 2021-01-03 18:26

    Everything about str is correct, yet another answer: an Exception instance has message attribute, and you may want to use it (if your customized IntegrityError doesn't do something special):

    except IntegrityError, e: #contains my own custom exception raising with custom messages.
        response_dict.update({'error': e.message})
    
    0 讨论(0)
  • 2021-01-03 18:43

    You should use unicode instead of string if you are going to translate your application.

    BTW, Im case you're using json because of an Ajax request, I suggest you to send errors back with HttpResponseServerError rather than HttpResponse:

    from django.http import HttpResponse, HttpResponseServerError
    response_dict = {} # contains info to response under a django view.
    try:
        plan.save()
        response_dict.update({'plan_id': plan.id})
    except IntegrityError, e: #contains my own custom exception raising with custom messages.
        return HttpResponseServerError(unicode(e))
    
    return HttpResponse(json.dumps(response_dict), mimetype="application/json")
    

    and then manage errors in your Ajax procedure. If you wish I can post some sample code.

    0 讨论(0)
提交回复
热议问题