diff options
author | Rich Hickey <richhickey@gmail.com> | 2007-07-31 16:51:06 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2007-07-31 16:51:06 +0000 |
commit | 2a4a356a602def89fd87bc037274b314ecdbfd8c (patch) | |
tree | bf1e37c641a6270e888e39a5d538cb790a8a2507 /src | |
parent | 7eb9b13d196dfab9215e9d45a7c956fddcf88640 (diff) |
got rid of most checked exceptions
Diffstat (limited to 'src')
-rw-r--r-- | src/jvm/clojure/lang/LockingTransaction.java | 24 | ||||
-rw-r--r-- | src/jvm/clojure/lang/Ref.java | 6 |
2 files changed, 19 insertions, 11 deletions
diff --git a/src/jvm/clojure/lang/LockingTransaction.java b/src/jvm/clojure/lang/LockingTransaction.java index 5ba5b586..3fe11c04 100644 --- a/src/jvm/clojure/lang/LockingTransaction.java +++ b/src/jvm/clojure/lang/LockingTransaction.java @@ -32,7 +32,7 @@ static final int COMMITTED = 4; final static ThreadLocal<LockingTransaction> transaction = new ThreadLocal<LockingTransaction>(); -static class RetryException extends Exception{ +static class RetryException extends Error{ } static class AbortException extends Exception{ @@ -92,7 +92,7 @@ final TreeMap<Ref, ArrayList<IFn>> commutes = new TreeMap<Ref, ArrayList<IFn>>() //returns the most recent val -Object lock(Ref ref) throws Exception{ +Object lock(Ref ref){ boolean unlocked = false; try { @@ -113,7 +113,15 @@ Object lock(Ref ref) throws Exception{ synchronized(refinfo) { if(refinfo.running()) - refinfo.wait(LOCK_WAIT_MSECS); + { + try + { + refinfo.wait(LOCK_WAIT_MSECS); + } + catch(InterruptedException e) + { + } + } } throw retryex; } @@ -153,10 +161,10 @@ private boolean barge(Info refinfo){ return barged; } -static LockingTransaction getEx() throws Exception{ +static LockingTransaction getEx(){ LockingTransaction t = transaction.get(); if(t.info == null) - throw new Exception("No transaction running"); + throw new IllegalStateException("No transaction running"); return t; } @@ -267,7 +275,7 @@ Object run(IFn fn) throws Exception{ } -Object doGet(Ref ref) throws Exception{ +Object doGet(Ref ref){ if(!info.running()) throw retryex; if(vals.containsKey(ref)) @@ -294,7 +302,7 @@ Object doGet(Ref ref) throws Exception{ } -Object doSet(Ref ref, Object val) throws Exception{ +Object doSet(Ref ref, Object val){ if(!info.running()) throw retryex; if(commutes.containsKey(ref)) @@ -308,7 +316,7 @@ Object doSet(Ref ref, Object val) throws Exception{ return val; } -void doTouch(Ref ref) throws Exception{ +void doTouch(Ref ref){ if(!info.running()) throw retryex; lock(ref); diff --git a/src/jvm/clojure/lang/Ref.java b/src/jvm/clojure/lang/Ref.java index 2396ff6b..c5c667bb 100644 --- a/src/jvm/clojure/lang/Ref.java +++ b/src/jvm/clojure/lang/Ref.java @@ -126,11 +126,11 @@ public Object currentVal(){ //* //must be dynamically bound or transactional read -public Object get() throws Exception{ +public Object get(){ return cacheVal = LockingTransaction.getEx().doGet(this); } -public Object set(Object val) throws Exception{ +public Object set(Object val){ return LockingTransaction.getEx().doSet(this, val); } @@ -138,7 +138,7 @@ public Object commute(IFn fn) throws Exception{ return LockingTransaction.getEx().doCommute(this, fn); } -public void touch() throws Exception{ +public void touch(){ LockingTransaction.getEx().doTouch(this); } |