エラーが出ても止まらないで欲しい
下の例はエラーが出ると処理が止まるやり方です
※Whileは× trueも×なので大文字小文字に気を付けましょう
1 2 |
while True: [処理] |
エラーが出ても無視
※main()がメイン処理です
1 2 3 4 5 |
while True: try: main() except: pass |
except:
例外が発生した時に実行する事
pass
例外が発生したときに何もしない
さすがに10回エラーが出た時は止める
1 2 3 4 5 6 7 8 9 |
i = 0 while True: try: main() i += 1 except: if i >= 10: break pass |
break
ループを抜ける
本当にループできるのか実験
強制停止する時にはコンソールでCtrl + Cで止められます
まずは必ずエラーが出る関数main()を作り実行してみます
1 2 3 4 5 |
def main(): print('処理') print(test) main() |
宣言も中身も無い’test’を出力しようとしたのでエラーが出ます
1 2 3 4 5 6 7 8 |
user:~/test/ $ python3 test.py 処理 Traceback (most recent call last): File "test.py", line 5, in main() File "test.py", line 3, in main print(test) NameError: name 'test' is not defined |
5回エラーが出たら止めます
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
def main(): print('処理') print(test) i = 0 while True: try: main() except: i += 1 print(i) if i >= 5: print('owari') break pass |
実行結果
1 2 3 4 5 6 7 8 9 10 11 12 |
user:~/test/ $ python3 test.py 処理 1 処理 2 処理 3 処理 4 処理 5 owari |
危険性について
エラーが出ていても無限にアクセスしようとする行為になってしまうと
サーバーへの攻撃と変わりありません
少なくともエラー回数で止まるようにしましょう
追記
Ctrl+C(キーボード入力)で抜ける場合の詳細を書きました