Comprobar en OverlappingFileLockException si se encuentra el método FileChannel lock()

Esta regla marca la utilización del método java.nio.channels.FileChannel.lock(). En Java SE 6, el método lock() ahora emite la excepción java.nio.channels.OverlappingFileLockException.

Esta regla señalará el método lock() que no tiene un bloque try/catch con OverlappingFileLockException o si el método circundante no emite una excepción OverlappingFileLockException.

Ejemplo 1:

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

Ejemplo 2:

public MyClass extends FileChannel{
private void doX(){
super.lock();
}
// más código
}

Ejemplo 3:

public MyClass extends FileChannel{
private void doX() throws OverlappingFileLockException{
super.lock();
}
private void doY() {
try{
super.lock();
catch {OverlappingFileLockException e} {}
}
// más código
}

En el ejemplo 1, se señalará la llamada a fc.lock().

En el ejemplo 2, se señalará la llamada a super.lock().

En el ejemplo 3, no se señalará nada, porque el método doX() ya emite la excepción OverlappingFileLockException y el método doY() captura la excepción OverlappingFileLockException.

Java SE 6 ha añadido la propiedad del sistema sun.nio.ch.disableSystemWideOverlappingFileLockCheck para controlar el comportamiento de comprobación del archivo java.nio.channels.FileChannel.lock.

Para obtener información adicional, consulte el elemento 4 de la guía de compatibilidad de Java SE 6 .