Ellenőrizze a FileChannel lock() metódus OverlappingFileLockException kivételét

Ez a szabály a java.nio.channels.FileChannel.lock() metódus használatát látja el jelzővel. A Java SE 6-os változatában a lock() metódus már java.nio.channels.OverlappingFileLockException kivételt dob.

Ez a szabály azon lock() metódust látja el jelzővel, mely nem rendelkezik OverlappingFileLockException kivételt meghatározó try/catch blokkal, vagy a körülfogó metódus nem dob OverlappingFileLockException kivételt.

1. példa:

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

2. példa:

public MyClass extends FileChannel{
private void doX(){
super.lock();
}
// további kódrészek
}

3. példa:

public MyClass extends FileChannel{
private void doX() throws OverlappingFileLockException{
super.lock();
}
private void doY() {
try{
super.lock();
catch {OverlappingFileLockException e} {}
}
// további kódrészek
}

Az 1. példában a rendszer jelzővel látja el az fc.lock() hívást.

A 2. példában a super.lock() hívás kerül jelzővel ellátásra.

A 3. példában a rendszer semmit sem lát el jelzővel, mivel a doX() metódus már OverlappingFileLockException kivételt dob, a doY() metódus pedig elkapja a OverlappingFileLockException kivételt.

A Java SE 6-os változatához hozzáadott sun.nio.ch.disableSystemWideOverlappingFileLockCheck rendszertulajdonság a java.nio.channels.FileChannel.lock fájlellenőrzési viselkedését vezérli.

További információkért tekintse meg a 4-es pontot a Java SE 6 kompatibilitási útmutató című dokumentumban.