2017-09-07 29 views
0

我正在使用Twilio的API來返回有關電話號碼的信息。有些電話號碼是無效的,如如何在Python中編寫if-else語句以處理異常/錯誤?

Traceback (most recent call last): 
    File "test_twilio.py", line 17, in <module> 
    number = client.lookups.phone_numbers("(4154) 693- 
6078").fetch(type="carrier") 
    File "/Users/jawnsano/anaconda/lib/python2.7/site- 
packages/twilio/rest/lookups/v1/phone_number.py", line 158, in fetch 
    params=params, 
    File "/Users/jawnsano/anaconda/lib/python2.7/site- 
packages/twilio/base/version.py", line 82, in fetch 
    raise self.exception(method, uri, response, 'Unable to fetch 
record') 
twilio.base.exceptions.TwilioRestException: 
HTTP Error Your request was: 

GET /PhoneNumbers/(4154) 693-6078 

Twilio returned the following information: 

Unable to fetch record: The requested resource /PhoneNumbers/(4154) 
693-6078 was not found 

More information may be available here: 

https://www.twilio.com/docs/errors/20404 

如果返回如上所示的一個錯誤,我想打印返回錯誤「有一個錯誤。」但是,對於我的if語句,是否有一種方法可以讓Python打印,以便一般情況下會出現回溯錯誤/錯誤?我認爲可能有更好的方法比設置使它像

if returned_value = (super long error message): 
    etc... 
+1

你可以分享你的代碼,以便更好地理解。 –

+0

錯誤消息未被返回。 – glglgl

回答

1

您使用嘗試和除了捕獲錯誤。

try: 
    ... your code 
except TwilioRestException: 
    print("whatever") 
+0

請注意未來的開發者:您需要從'twilio.base.exceptions'中導入'TwilioRestException'。 – rnevius

0

對於這個特定的例外:

try: 
    the_function_that_raises_the_exception() 
except twilio.base.exceptions.TwilioRestException as e: 
    print("Oops, exception encountered:\n" + str(e)) 

請注意,您可能需要調用import twilio.base.exceptions第一。

任何例外: - 此捕獲所有的異常,如果處理不當,可能會掩蓋一個更大的問題

try: 
    the_function_that_raises_the_exception() 
except Exception as e: 
    print(e) 

當使用第二種方法雖然要小心。除非你知道哪裏有異常來源於(但如果是這樣的話,你知道類型,你可以過濾只有該類型),有時這種方法可用於:

try: 
    the_function_that_can_raise_numerous_exceptions() 
except Exception as e: 
    with open("exceptions.txt", "a") as f: 
     f.write(e) 
    # or even send an email here 
    raise 

這可確保例外是(由except),然後寫入一個文件,然後重新加註。這仍然會導致腳本失敗,但會有日誌查看。

+1

你不應該建議捕捉所有例外。這幾乎從來都不是正確的做法。 –

+0

是的,正計劃擴大答案以警告這種方法 - 剛剛完成! –