37

javascriptでpython 'pass'の行に沿って何かがありますか?

次のJavaScriptに相当するものを実行したい:

try:
  # Something that throws exception
catch:
  pass
4

3 に答える 3

49

passPythonでは何もしません。空のブロックに必要なのは

try:
    # Something that throws exception
catch:

# continue other stuff

構文エラーです。catchJavaScriptでは、空のブロックを使用できます。

try {
    // Something that throws exception
}
catch (e) {}
于 2012-05-23T20:06:28.347 に答える
36

あり、ここにあります:



そうです、何もありません:

try {
    somethingThatThrowsAnException();
} catch (e) {
}
于 2012-05-23T20:06:35.090 に答える
4

次のJavaScriptに相当するものを実行したい:

try:
  # Something that throws exception
catch:
  pass

Python には try/catch がありません。try/except があります。に置き換えるcatchexcept、次のようになります。

try {
  //     throw any exception
} catch(err) {}  

catch の後の空のコード ブロックは、Python のpass.

ベストプラクティス

ただし、この質問の解釈は少し異なるかもしれません。Python の try/except ブロックと同じセマンティクスを採用するとします。Python の例外処理はもう少し微妙で、キャッチするエラーを指定できます。

実際、特定の種類のエラーのみをキャッチすることがベスト プラクティスと見なされています。

したがって、Python のベスト プラクティス バージョンは次のようになります。処理する準備ができている例外のみをキャッチし、バグを隠すことを避けるためです。

try:
    raise TypeError
except TypeError as err:
    pass

おそらく、適切なエラー タイプをサブクラス化する必要があります。標準の Javascript には、非常に豊富な例外階層がありません。私が選んだTypeErrorのは、Python のTypeError.

Javascript でこれと同じセマンティクスに従うには、まずすべてのエラーをキャッチする必要があるため、それを調整する制御フローが必要です。そのため、if 条件を使用して、エラーが必要なタイプのエラーではないかどうかを判断する必要がありますpass。else 制御フローの欠如は、 を沈黙させるものTypeErrorです。そして、このコードでは、理論的には、他のすべてのタイプのエラーが表面化して修正されるか、少なくとも追加のエラー処理のために識別される必要があります。

try {                                 // try:
  throw TypeError()                   //     raise ValueError
} catch(err) {                        // # this code block same behavior as
  if (!(err instanceof TypeError)) {  // except ValueError as err:
    throw err                         //     pass
  } 
}                       

コメント大歓迎!

于 2015-02-02T22:28:42.827 に答える