同僚のスクリプトと私の R スクリプトに一貫した例外処理インターフェイスを設定するために、次の tryCatch 構造を採用したいと考えています。
- 外側の tryCatch は、特定の R スクリプトをラップしています。スクリプトの中止を必要とする致命的なエラーをキャッチして処理するために使用されます。
- ユーザーのスクリプト内のユーザー固有の tryCatch コマンド。これらはキャッチし、場合によっては処理する必要があります
- 2a. 致命的ではないエラー。スクリプトの中止は必要ありません
- 2b. スクリプトの中止を必要とする致命的なエラー。エラーは外側の tryCatch によって処理されます [1. を参照]。
- 2c。追加のエラー情報を含む致命的なエラー。外側の tryCatch によって処理されるエラー。
次のコードは、これらの機能を実装する方法です。しかし、私はRの専門家ではないので、これが良いアプローチであるかどうかを尋ねたいと思います. 具体的には:
Q1. 内側の tryCatch でエラー ハンドラーを指定せず、外側の tryCatch がそのエラーを処理するのを待つことは問題ありませんか (上記の 2b. と以下のコードを参照)。
Q2. ハンドラー内で同じエラー (上記/下記の 2c. を参照) を再スローすることは正しいですか? または適切なコーディング スタイルと見なされますか?
ありがとうございました!
#outer tryCatch, see 1.
tryCatch({
#user code block
#2a. user specific tryCatch, object "vec" not defined
tryCatch(print(vec),error=function(e) {print("Non-fatal error. Script execution continued.");print(e);})
#2b. user specific tryCatch
tryCatch(vec*2)
#2c. user specific tryCatch
tryCatch(vec*parameter1, error=function(e) {print("Additional fatal error information. Script execution aborted.");stop(e);})
#end of user code block
},
#outer tryCatch error handler in order to handle fatal errors
error=function(e) {print("Fatal error");print(e);}
)