2011-08-11 17 views
1

以下のpythonでは、メッセージRSUはシングルノードマシン**ではサポートされていません**は印刷されません。誰でも助けてくれる?Python例外処理

#! /usr/bin/env python 

import sys 

class SWMException(Exception): 
    def __init__(self, arg): 
     print "inside exception" 
     Exception.__init__(self, arg) 

class RSUNotSupported(SWMException): 
    def __init__(self): 
     SWMException.__init__(self, "**RSU is not supported on single node machine**") 

def isPrepActionNeeded(): 
    if 1==1: 
     raise RSUNotSupported() 
try: 
    isPrepActionNeeded() 
except: 
    sys.exit(1) 

答えて

0

変更最後の2行に:

except Exception as e: 
    print e 
    sys.exit(1) 

私はにここだけExceptionを使用これを裸のexcept:に相当するものにしておきます。あなたは本当にRSUNotSupportedを使用して、他のタイプのエラーを隠さないようにしてください。

+0

例外.__ init __(self、arg) このinit呼び出しのarg引数は何ですか?それはメッセージを印刷しません – mandeep

+0

メッセージを例外の一部にするため、後で自分で印刷することができます。 – agf

+0

よ、そうです。どうもありがとう。それは本当に役立った – mandeep

1

あなたが句を除いて/あなたの試みで例外を処理しているため。あなたも、それを印刷するために:)ここにしようとしていないので、それは、印刷されていない

2

try: 
    isPrepActionNeeded() 
except RSUNotSupported as e: 
    print str(e) 
    sys.exit(1) 
+0

例外.__ init __(self、arg)ここでargが渡されます。それは何のためにあるのです?? – mandeep

+0

さて、あなたは "** RSU ..."メッセージをどこかに保存しなければなりませんか?あなたの例外はExceptionクラスから継承します。したがって、例外.__ init __(self、message)はスーパークラスを初期化し、引数(メッセージ)を渡します。今度はあなたの例外にはそのメッセージが含まれており、RSUNotSupportedクラスインスタンス(またはそのインスタンスのstr())の__str __()を呼び出してメッセージが返されます。 –