Rechercher l'exception OverlappingFileLockException pour la méthode FileChannel lock()

Cette règle marque l'utilisation de la méthode java.nio.channels.FileChannel.lock(). Dans Java SE 6, la méthode lock()génère maintenant l'exception java.nio.channels.OverlappingFileLockException.

Cette règle marque la méthode lock() si elle ne contient pas de bloc try/catch avec l'exception OverlappingFileLockException ou que la méthode qui l'englobe ne génère pas d'exception OverlappingFileLockException.

Exemple 1 :

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

Exemple 2 :

public MyClass extends FileChannel{
private void doX(){
super.lock();
}
// code supplémentaire
}

Exemple 3 :

public MyClass extends FileChannel{
private void doX() throws OverlappingFileLockException{
super.lock();
}
private void doY() {
try{
super.lock();
catch {OverlappingFileLockException e} {}
}
// code supplémentaire
}

Dans l'exemple 1, l'appel fc.lock() est marqué.

Dans l'exemple 2, l'appel super.lock() est marqué.

Dans l'exemple 3, rien n'est marqué car la méthode doX() génère déjà l'exception OverlappingFileLockException et la méthode doY() intercepte l'exception OverlappingFileLockException.

Java SE 6 a ajouté la propriété système sun.nio.ch.disableSystemWideOverlappingFileLockCheck pour contrôler le comportement de la vérification du fichier java.nio.channels.FileChannel.lock.

Pour plus d'informations, voir le point 4 du guide Java SE 6 Compatibility.