try-exceptとは?
pythonにおいて、エラー(例外)が発生する可能性のあるコードブロックを try ブロックで囲み、例外が発生した場合に except ブロック内のコードを実行するもの。
try:
何かしらのエラーが発生しそうな処理
except エラー名:
そのエラー名が発生したときに実行する処理
↑のように書く。
知った経緯
現在、スクレイピングを学んでいる最中であり、その際に、httpリクエストが失敗したときの処理、どうしよう。。と悩んでいる時に、このtry-exceptを知りました。本来だったら、考えうるエラーに応じて、if文を書くしかないと思っていましたが、もっと簡潔に解決できました!
~実際のコード~
try:
html = requests.get("URL")
html.raise_for_status()
except requests.RequestException as e:
print(f"Webページの取得に失敗しました:{e}")
return None
try
requests.get("URL")
【処理内容】
指定したURLに対してHTTPリクエストを送信し、サーバーからのレスポンスを取得する処理。
【起こりうるエラー】
・サーバー接続出来ない。(サーバーがダウンしている等で)
・タイムアウト。(サーバーが非常に遅い等で)
html.raise_for_status()
【処理内容】
HTTPステータスコードが200番台か確認し、200番台以外であれば、エラーとみなす。(200番台はリクエストが成功したことを示すレスポンスコード)
【起こりうるエラー】
・404 Not Found。(Webページが見つからない)
・500 Internal Server Error。(何らかのサーバ内で起きたエラー)
except
except requests.RequestException
このRequestExceptionとは、requests モジュールにおけるすべてのリクエスト関連のエラーの親クラスです。ようするに、ネットワーク接続エラーが発生した場合に使われる、ConnectionErrorや、サーバーからエラーステータス(404など)を受け取ったときに使われる、HTTPErrorなどは、RequestException を継承したクラスなので、これをexceptに書けばほとんどのエラーに対応できる!(みたいな感じだと思います。。)