Clojure: как получить доступ к SQLException из проекта clojure / leiningen? - PullRequest
1 голос
/ 21 августа 2011

У меня исключение sql из clojure, которое выглядит так:

java.lang.Exception: transaction rolled back: 
  Batch entry 0 drop database triface was aborted.  
Call getNextException to see the cause.

Я хочу вызвать getNextException для полученного исключения:

(require [clojure.contrib.sql :as sql])

(try 
  (db/rebuild-table) ;; function causing the exception
  (catch Exception e (.getNextException e)))

Но тогда я получаю это:

java.lang.IllegalArgumentException: No matching field found: 
  getNextException for class java.lang.Exception

Итак, я предполагаю, что хочу поймать исключение SQLE:

(catch SQLException e (.getNextException e)))

Кроме того, я не могу найти, как требовать этот класс. Кажется, он не предоставляется ни clojure.contrib.sql, ни clojure.contrib.sql.internal. Javadocs говорят, что это в java.sql, но как мне это требуется?

Спасибо!

1 Ответ

2 голосов
/ 21 августа 2011

Вам это не нужно, вы импортируете его,

(import java.sql.SQLException)

, но даже если вы поймаете исключение, если оно является SQLException, вы сможете вызвать getNextException


(let [up (SQLException. "throw")]
  (try
    (throw up)
    (catch Exception e (isa? (type e) SQLException))))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...