2016-05-18 8 views
-2

ValueErrorに問題があります。値のエラーと文字列の例外

は、私は、文字列を返す機能を持っているが、私はそれが機能から提起されていない場合、それはあまりにとValueErrorに評価されたくない

サンプルコード

def test(a): 
    if a == a: 
     raise ValueError('There was a error # 2') 


a = 'a' 
if ValueError: 
    print "There was a error # 1" 


test(a) 

出力

There was a error # 1 
Traceback (most recent call last): 
    File "/home/user/Test_1.py", line 13, in <module> 
    test(a) 
    File "/home/user/Test_1.py", line 5, in test 
    raise ValueError('There was a error # 2') 
ValueError: There was a error # 2 

Process finished with exit code 1 

私が正しくドキュメントを読むと、それはb y文字列、どのように私はこの動作を防ぐのですか?

https://docs.python.org/2/library/exceptions.html#exceptions.IndexError

+2

1) 'ValueError'を送出は常に真であると' print'は常に実行される場合。 2)あなたの関数は、 'if a == a'が常に真であるので、エラーを常に発生させます。 3)あなたはエラーをキャッチするために何もしていない。 - あなたがここで何をしようとしているのかははっきりしていません。たぶんあなたは 'try..catch'構文を探していますか? – deceze

答えて

-1

わからないなぜそれが前に働いていたが、私はそれがより明示的に作られ、それが機能するようになりました。また、最初の例はもっと曖昧で、私はライブラリにある関数からエラーをキャッチしようとしていました。

サンプルコード

def test(a): 
    try: 
     if a == a: 
      pass 
     raise ValueError('There was a error # 2') 
    except Exception, e: 
     str(e) 
     return e 

a = 'a' 

b = test(a) 

if type(b) == ValueError: 
    print b 

出力

There was a error # 2 

Process finished with exit code 0 
+0

@deceze答えは – sonance207

+0

です。このコードはまだほとんどナンセンスです。私はそれが達成されるべきものは何も知らない。 – deceze

関連する問題