エラーを「キャッチ」してログに記録した後、それ以上コードステップが実行されないようにするにはどうすればよいですか (q() を使用したくありません)。
私の使用シナリオは次のようなものです: - いくつかの計算を行います - エラーが発生した場合はログに記録します - コード内のそれ以上のステップの実行を停止します
以下のコード例を使用してこれを解決しようとしました(実際のログ機能の代わりに印刷が使用されます):
handleMySimpleError<-function(e, text) {
# Let's log the error
print(paste0(text, ": ", e))
# This should stop execution of any further steps but it doesn't
stop("Now, stop. For real.")
}
print("Starting execution...")
tryCatch(
stop("My simple error."),
error=function(e) {handleMySimpleError(e, "could not finish due to")}, finnaly=NULL
)
print("Successfully ended execution...")
print("Successfully finished execution...") が実行されないことをどういうわけか望んでいました...しかし、ここに私が得る出力があります:
> handleMySimpleError<-function(e, text) {
+ # Let's log the error
+ print(paste0(text, ": ", e))
+ # This should stop execution of any further steps but it doesn't
+ stop("Now, stop. For real.")
+ }
>
> print("Starting execution...")
[1] "Starting execution..."
> tryCatch(
+ stop("My simple error."),
+ error=function(e) {handleMySimpleError(e, "could not finish due to")}, finnaly=NULL
+ )
[1] "could not finish due to: Error in doTryCatch(return(expr), name, parentenv, handler): My simple error.\n"
Error in handleMySimpleError(e, "could not finish due to") :
Now, stop. For real.
> print("Successfully ended execution...")
[1] "Successfully ended execution..."
print("実行に成功しました...") が実行されないようにするにはどうすればよいですか? エラーがエラーハンドラ関数に記録された後にコード処理を停止する正しい戦略は何ですか?