Wellllll ...はい、いいえ、ほとんどありません。
すべてのPython例外はErrorから派生した特定のエラークラスにラップされ、Pythonモジュールは「正しい」種類のエラーを発生させることになっています。たとえば、範囲外のインデックスのエラーは、IndexErrorをスローする必要があります。基本言語はこれらのエラーを知っているので、except ...句で適切なエラータイプをキャッチできます。
Rはそうしていません。エラーは型なしです。境界外のインデックスと他のエラーとの間に本質的な違いはありません。
しかし、非常に限られた特定の状況下では、あなたが不正行為をする可能性があります。
> y <- tryCatch(x[[2]], error = function(e) e)
> y
<simpleError in x[[2]]: subscript out of bounds>
> y$message
[1] "subscript out of bounds"
ここで重要なのは、tryCatch
機能とerror
句の使用です。 tryCatchのエラー句は、 'simpleError'型のオブジェクトであり、 "message"という項目を含むeに対して任意の操作を実行できる1つの変数の関数です。あなたが実際にあなたが見てみたいエラー文字列を検出することができ、それが保証されていない場合は、別途
> y <- tryCatch(x[[2]],
error = function(e) {
if ('subscript out of bounds' == e$message) return(NA) else stop(e))
})
> y
[1] NA
これはのみ動作し、メッセージを解析し、興味深い事例を扱うことができます。 (そして再び、Pythonでは保証されていないので、事柄はお互いに大きな違いはありません。)
最終的な質問:なぜ天国の名前でこれをやっていますか?あなたは何ですか実際にをしようとしていますか?
あなたは本当に何をしようとしていますか? –
通常、例外を回避するために入力チェックを実装します。 – Roland
私はRの同様の機能については気づいていませんが、エラー処理機能については十分に検討していません。出発点としては、 '?tryCatch'に含まれるメインヘルプファイルとリンクlinkaを読むのが便利です。 – lmo