1. ホーム
  2. パイソン

[解決済み】Pythonでプログラムを中断させずに警告を発生させる

2022-04-01 21:56:32

質問

Pythonで、プログラムをクラッシュ/停止/中断させることなくWarningを発生させようとしています。

私は以下の簡単な関数を使って、ユーザーが0以外の数値を渡したかどうかをチェックしています。もしそうなら、プログラムは警告を出しますが、通常通り続けます。以下のコードのように動作するはずですが、クラス Warning() , Error() または Exception() 警告を手動で出力する代わりに

def is_zero(i):
   if i != 0:
     print "OK"
   else:
     print "WARNING: the input is 0!"
   return i

以下のコードを使用して、関数に0を渡すと、プログラムがクラッシュし、値が返されなくなります。その代わりに、プログラムを正常に続行し、ユーザーに関数に0を渡したことを通知するだけにしたいのです。

def is_zero(i):
   if i != 0:
     print "OK"
   else:
     raise Warning("the input is 0!")
   return i

unittestで警告が投げられたことをテストできるようにしたいです。単にメッセージを出力するだけでは、unittestのassertRaisesでテストすることはできません。

どのように解決するのですか?

をしないことです。 raise を使用する必要があります。 warnings モジュールを使用します。これを上げることで、警告ではなく、エラーを発生させることになります。