summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2007-07-31 16:51:06 +0000
committerRich Hickey <richhickey@gmail.com>2007-07-31 16:51:06 +0000
commit2a4a356a602def89fd87bc037274b314ecdbfd8c (patch)
treebf1e37c641a6270e888e39a5d538cb790a8a2507 /src
parent7eb9b13d196dfab9215e9d45a7c956fddcf88640 (diff)
got rid of most checked exceptions
Diffstat (limited to 'src')
-rw-r--r--src/jvm/clojure/lang/LockingTransaction.java24
-rw-r--r--src/jvm/clojure/lang/Ref.java6
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);
}