Object result = start(); lock.release( ownerObject ); return result; } catch( Exception e ) { lock.release( ownerObject );
return start(); } catch( ReadOnlyException e ) { } finally { lock.release( ownerObject );
    public Object run() {    	Lock lock = file.getLock();        try {            // try to acquire a lock on the file            try {                lock.acquire( ownerObject, mode );                lock.enter( ownerObject );            } catch( LockException e ) {                // timed out                e.printStackTrace();                return null;            }    	    file.setOwnerObject(ownerObject);    	    Object result = start();            lock.release( ownerObject );            return result;    	} catch( Exception e ) {            lock.release( ownerObject );        }        return null;    }