私はYesodとHaskellを初めて使用するので、我慢してください。ただし、ファイルを受け入れ、単語をカウントして、新しいYesodWebページに結果を表示するプログラムがあります。例外をより適切にキャッチする方法が必要です。たとえば、隠しファイルで以下の関数を実行する場合:
wordCount :: String -> String -> String
wordCount ('.' : _) _ = error "Cannot count hidden files."
wordCount name contents = "<p>There are <b>" ++ show (length $ words contents) ++ "</b> words in your file <i>" ++ name ++ "</i>.</p>"
そのエラーメッセージを表示してから、ユーザーが新しいファイルを送信するためのフォームを表示したいと思います。現在、「ページの読み込み中にサーバーへの接続がリセットされました」というページに移動します。
Yesodには独自のcatch関数のセットがあり、自分で作成するには非表示にする必要があると思いますが、それらがどこにあるかわからず、ドキュメントでそれらへの参照を見つけることができません。ユーザーが悪いファイルを入れた場合にサイトがクラッシュすることは望ましくありません。
どんな助けでも本当にありがたいです。
編集:提案をありがとう。この方法でエラーをスローすることはエラーに対処するための最良の方法ではないことを私は理解していますが、問題は実際には、Yesodサイトではなくターミナルから通常実行される既存のHaskellコードで作業していることです。小さな例として単語数を使用しましたが、実際には、数十の関数と散在するエラースローを含む数十のファイルです。うまくいけば、既存のコードのすべての関数を完全に変更することなく、これらをキャッチできます。Yesodで例外をキャッチする方法について誰かが何か提案があれば、私は本当にそれをいただければ幸いです。