“Ask forgiveness not permission” - explain

前端 未结 8 1613
长情又很酷
长情又很酷 2020-11-22 02:02

I\'m not asking for personal \"religious\" opinions about this philosophy, rather something a bit more technical.

I understand this phrase is one of several litmus t

8条回答
  •  闹比i
    闹比i (楼主)
    2020-11-22 02:39

    Ask forgiveness not permission is meant to simplify code. It's meant for code to be written like this when there's a reasonable expectation that .bar might trigger an AttributeError.

     try:
         print foo.bar
     except AttributeError as e
         print "No Foo!" 
    

    Your code appears to both ask permission AND forgiveness :)

    The thing is, if you reasonably expect something to fail, use a try/catch. If you don't expect something to fail, and it fails anyway, well the exception that gets thrown becomes the equivalent of a failed assertion in other languages. You see where the unexpected exception is occurring and adjust your code/assumptions accordingly.

提交回复
热议问题