2012-04-04 29 views
0

私の質問は、スラップを使用している場合には、例外からnilを返すにはどうすればいいですか?読み込まないファイル名と例外テキスト?ここに詳細があります。私は、次のコードはnilを返すようにしたい例外文字列の代わりにnilを代入する方法

(defn open-csv-file 
    "Attempts to open a .csv file and complains if the file is not present." 

    [file-name] 
     (let [file-data 
      (try 
       (slurp file-name) 
       (catch Exception e (.getMessage e)))] 
      file-data)) 

ここでは現在返されているものの一例です。

私はこの機能を変更しないようにして、例外をスローし、呼び出し元がtry/catchブロックを使用するようにしています。

ありがとうございます。

答えて

2

私はあなたの質問を理解していれば、あなたはこれを変更する必要があります。これに

(catch Exception e (.getMessage e)))] 

(catch Exception e))] 
+0

Fabooを。私はClojureのtry/catchについて書かれたものはあまり見つからない。ありがとうございました。 – octopusgrabbus

+1

ご存じのように、キャッチする最初の2つの引数は、Exceptionクラスと例外にバインドするシンボルです。後続の引数は、指定された順序で評価する単なるタプルです。 catchの戻り値は最後のタプルの値です。タプルがない場合、戻り値はnilです。 – user100464

+0

"tuple"はここでは意味をなさない単語です。後続の引数は単なる式です。しかし、個人的には、特に 'catch 'の動作に慣れていない場合は、ここに明示的に' nil'を書くことをお勧めします。もちろんそれも空白のままにしておくのは間違いありません。それも動作します。 – amalloy

関連する問題