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

Cette règle marque l'utilisation du java.nio.channels.FileChannel.lock() . Dans Java SE 6, lock() méthode now throws java.nio.channels.OverlappingFileLockException .

Cette règle marque le lock() qui n'a pas de bloc try / catch avec OverlappingFileLockException ou si la méthode environnante n'émet pas OverlappingFileLockException .

Exemple 1 :

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

Exemple 2 :

< span class="Code" > public MyClass étend FileChannel{
private void doX(){
super.lock();
}
// code supplémentaire
}

Exemple 3 :

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

Dans l'exemple 1, le fc.lock() L'appel sera marqué.

Dans l'exemple 2, le super.lock() L'appel sera marqué.

Dans l'exemple 3, rien ne sera marqué, car la méthode doX() émet déjà des messages OverlappingFileLockException et la méthode doY() intercepte OverlappingFileLockException .

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

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