Verificaţi OverlappingFileLockException pentru metoda FileChannel lock()

Această regulă steaguri utilizarea de java.nio.channels.FileChannel.lock() :NONE. În Java în care 6 lock() Metoda acum aruncă java.nio.channels.OverlappingFileLockException .

Această regulă va semnala lock() metoda care nu are un try/captură bloc cu OverlappingFileLockException sau în cazul în care metoda înconjurătoare nu arunca OverlappingFileLockException .

Exemplul 1:

< span class="Code" > public MyClass
private void doX(){
FileChannel fc= getFileChannel();
fc.lock();
}
}

Exemplul 2:

< span class="Code" > public MyClass se extinde FileChannel
private void doX(){
super.lock();
}
// more code
}

Exemplul 3:

< span class="Code" > public MyClass se extinde FileChannel
private void doX() throws OverlappingFileLockException{
super.lock();
}
private void doY() {
try{
super.lock();
catch {OverlappingFileLockException e} {}
}
// more code
}

În exemplul 1, fc.lock() Apelul va fi marcat.

În exemplul 2, super.lock() Apelul va fi marcat.

În exemplul 3, nimic nu va fi marcat, deoarece metoda doX() OverlappingFileLockException și doY()) OverlappingFileLockException .

Java SE 6 a adăugat proprietatea sistemului sun.nio.ch.disableSystemWideOverlappingFileLockCheck de control java.nio.channels.FileChannel.lock verificarea comportamentului.

Pentru informaţii suplimentare, vedeţi articolul 4 din ghidul Java SE 6 Compatibility.