Sprawdzenie wyjątku OverlappingFileLockException w metodzie lock() klasy FileChannel

Ta reguła powoduje oznaczenie użycia metody java.nio.channels.FileChannel.lock(). W środowisku Java SE 6 metoda lock() zgłasza obecnie wyjątek java.nio.channels.OverlappingFileLockException.

Ta reguła powoduje oznaczenie metody lock(), która nie zawiera bloku try/catch z wyjątkiem OverlappingFileLockException, lub jeśli metoda otaczająca nie zgłasza wyjątku OverlappingFileLockException.

Przykład 1:

public MyClass{
private void doX(){
FileChannel fc= getFileChannel();
fc.lock();
}
}

Przykład 2:

public MyClass extends FileChannel{
private void doX(){
super.lock();
}
// dalszy kod
}

Przykład 3:

public MyClass extends FileChannel{
private void doX() throws OverlappingFileLockException{
super.lock();
}
private void doY() {
try{
super.lock();
catch {OverlappingFileLockException e} {}
}
// dalszy kod
}

W przykładzie 1 zostanie oznaczone wywołanie metody fc.lock().

W przykładzie 2 zostanie oznaczone wywołanie metody super.lock().

W przykładzie 3 nic nie zostanie oznaczone, ponieważ metoda doX() zgłasza już wyjątek OverlappingFileLockException, a metoda doY() przechwytuje wyjątek OverlappingFileLockException.

W środowisku Java SE 6 dodano właściwość systemową sun.nio.ch.disableSystemWideOverlappingFileLockCheck w celu sterowania działaniem sprawdzania plików w metodzie java.nio.channels.FileChannel.lock.

Dodatkowe informacje można znaleźć w punkcie 4 podręcznika Kompatybilność środowiska Java SE 6.