Python 特定の例外をキャッチする
2023-09-11 01:40:52
質問
特定の
ValueError
ではなく、任意の
ValueError
.
こんな感じでやってみました。
try: maquina['WPF'] = macdat(ibus, id, 'WPF')
except: ValueError, 'For STRING = ’WPF’, this machine is not a wind machine.':
pass
しかし、それは
SyntaxError: can't assign to literal.
そこで、試してみました。
try: maquina['WPF'] = macdat(ibus, id, 'WPF')
except ValueError, e:
if e != 'For STRING = ’WPF’, this machine is not a wind machine.':
raise ValueError, e
しかし、それは私が避けたいものであっても、例外を発生させます。
どのように解決するのですか?
で
except ValueError,e
,
e
は例外のインスタンスで、文字列ではありません。 ですから、もし
e
が特定の文字列と等しくないかどうかをテストする場合、そのテストは常に False になります。 試してみてください。
if str(e) != "..."
の代わりに
例
def catch(msg):
try:
raise ValueError(msg)
except ValueError as e: # as e syntax added in ~python2.5
if str(e) != "foo":
raise
else:
print("caught!")
catch("foo")
catch("bar")
一般的に、エラーメッセージはあまり頼りにしたくはないでしょう。 もし、あなたが呼び出し可能な
macdat
を発生させる代わりに
ValueError
で
macdat
を継承した独自の例外を発生させることができます。
ValueError
:
class MyValueError(ValueError): pass
では
MyValueError
をキャッチし、他の
ValueError
が他のものに捕まるようにする(あるいは捕まらないようにする)。 単純に
except ValueError
はこのタイプの例外も捕らえるので、この関数からValueErrorsを捕らえるかもしれない他のコードでも同じように動作するはずです。
関連
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] Pythonで例外を手動で発生(スロー)させる
-
[解決済み] JUnit 4のテストで、ある例外が投げられたことをどのように断言しますか?
-
[解決済み] Pythonで例外を表示するには?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】プログラムを停止/終了させることなく、完全な例外トレースバックをキャッチして表示する方法は?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] 新しいpip backtrackingの実行時問題の解決
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pandasのデータフレームでタプルの列を分割するにはどうしたらいいですか?
-
[解決済み] Pythonのキャッシュライブラリはありますか?
-
[解決済み] PythonでSVGからPNGに変換する
-
[解決済み] なぜ(0-6)は-6=偽なのか?重複
-
[解決済み] DataFrameに日付間の日数カラムを追加する pandas
-
[解決済み] ファブリック経由でデプロイユーザとしてvirtualenvを有効化する
-
[解決済み] オブジェクトのリストに特定の属性値を持つオブジェクトが含まれているかどうかをチェックする
-
[解決済み] Pythonでマルチプロセッシングキューを使うには?
-
[解決済み] Cythonのコードを含むPythonパッケージはどのように構成すればよいのでしょうか?
-
[解決済み] Flaskで非同期タスクを作る