2017-03-27 3 views
1

configfileから値を取得しています。設定パーサーで例外がキャッチされていますが、エラートレースバックはPythonで表示されます

def __getConfigDetails(self): 
     try: 
      self.username = config.get("plugin_haproxy", 'user') 
      self.hostname = config.get("plugin_haproxy", 'host') 
      self.filelocation = config.get("plugin_haproxy", 'filepath') 

     except ConfigParser.NoOptionError as error: 
      logging.error(error) 
      print "Error in options Name", error 
     except ConfigParser.NoSectionError as error: 
      logging.error(error) 
      print "Error in sections Name", error 

これで詳細情報を取得した後、私は、引数として上記の値を必要とする別の関数を呼び出しています:確か私のプログラムは、私は私の設定は以下のようにブロックを除き、試しに読み出し動作を持って発生する可能性があります任意の例外を処理するようにするには。私たちは、値の1は、もちろん使用できなくなることを知っているが、どのように我々は、このような状況を扱うか、なぜ例外が

self.executeCommand(self.username, self.hostname, self.filelocation) 

プログラムは素晴らしい作品が、ユーザが設定のオプションを変更した場合とし、それを処理していませんファイルを変更し、のユーザー名をに変更しました。もちろん、このメソッドは、ConfigParser.NoOptionError例外を処理しているので、このメソッドを処理すると想定しています。ここで

、私のプログラムでは、それは例外を投げるだけでなく、以下のようなエラートレースバックを投げ、

Traceback (most recent call last): 
    File "main.py", line 67, in <module> 
    main() 
    File "main.py", line 59, in main 
    cons.PLUGIN_CONFIG_PATH, finaloutput, finallogs) 
    File "/home/tara/taraproject/checkaccessEnv/project2/plugins/plugin_haproxy/plugin_haproxy.py", line 51, in run 
    self.__getConfigDetails() 
    File "/home/tara/taraproject/checkaccessEnv/project2/plugins/plugin_haproxy/plugin_haproxy.py", line 23, in __getConfigDetails 
    self.username = config.get("plugin_haproxy", 'user') 
    File "/usr/lib/python2.7/ConfigParser.py", line 340, in get 
    raise NoOptionError(option, section) 
ConfigParser.NoOptionError: No option 'user' in section: 'plugin_haproxy' 

される私はなぜそれがそうである、例外の印刷が表示されるようにしたいですか?私はsecondfunctionつまり、それだけでさらに移動 よりも動作しますが、私は仕事forheadをやっ 例外を持っているので、これは解決策ではないかもしれない場合__executeCommandを確認するために、if節 に使用することで、この状況を処理することができます知っている

このような

答えて

0

問題が 例外が発生した問題と、それを実行していませんでし以来、私はそれを得ることができなかった設定値を取得していますtryブロックを解決するための最良の方法は何である私は関数を呼び出しています次 **

self.executeCommand(self.username、self.hostname、self.filelocation)エラーは、以前の機能デフ__getConfigDetailsでそう起こっこうして設定された値を持っていけないパラメータで

(自己):以下のようにsys.exit()を追加しました。

def __getConfigDetails(self): 
     try: 
      self.username = config.get("plugin_haproxy", 'user') 
      self.hostname = config.get("plugin_haproxy", 'host') 
      self.filelocation = config.get("plugin_haproxy", 'filepath') 
      logging.info('Config Read Success') 
     except ConfigParser.NoOptionError as error: 
      logging.exception(error) 
      print "Error in options Name", error 
      sys.exit(1) 
     except ConfigParser.NoSectionError as error: 
      logging.error(error) 
      print "Error in sections Name", error 
      sys.exit(1) 

私は、これは

を行うための正しい方法であると思います
関連する問題