Această regulă semnalează utilizarea metodei java.nio.channels.FileChannel.lock(). În Java SE 6, metoda lock() aruncă acum java.nio.channels.OverlappingFileLockException.
Această regulă va semnala metoda lock() care nu are un bloc try/catch cu OverlappingFileLockException sau dacă metoda nu aruncă OverlappingFileLockException.
Exemplul 1:
|
public MyClass{
private void doX(){ FileChannel fc= getFileChannel(); fc.lock(); } } |
Exemplul 2:
|
public MyClass extends FileChannel{
private void doX(){ super.lock(); } // more code } |
Exemplul 3:
|
public MyClass extends FileChannel{
private void doX() throws OverlappingFileLockException{ super.lock(); } private void doY() { try{ super.lock(); catch {OverlappingFileLockException e} {} } // more code } |
În exemplul 1, apelul fc.lock() va fi semnalat.
În exemplul 2, va fi semnalat apelul super.lock().
În exemplu 3 nu va fi semnalat nimic deoarece metoda doX() aruncă deja OverlappingFileLockException şi metoda doY() prinde OverlappingFileLockException.
Java SE 6 a adăugat proprietatea de sistem sun.nio.ch.disableSystemWideOverlappingFileLockCheck pentru a controla comportamentul de verificare a fişierului java.nio.channels.FileChannel.lock.
Pentru informaţii suplimentare, vedeţi articolul 4 din ghidul Java SE 6 Compatibility.