Проверка OverlappingFileLockException для метода lock() класса FileChannel

Это правило помечает использование java.nio.channels.FileChannel.lock() метод. В Java SE 6: lock() метод теперь выбрасывает java.nio.channels.OverlappingFileLockException .

Это правило пометит флагом lock() метод, у которого нет блока try/catch с OverlappingFileLockException или если окружающий метод не выбрасывает OverlappingFileLockException .

Пример 1:

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

Пример 2:

< span class="Code" > public MyClass расширяет FileChannel{
private void doX(){
super.lock();
}
// дополнительный код
}

Пример 3:

< span class="Code" > public MyClass расширяет FileChannel{
private void doX() throws OverlappingFileLockException{
super.lock();
}
private void doY() {
try{
super.lock();
catch {OverlappingFileLockException e} {}
}
// дополнительный код
}

В примере 1- fc.lock() Звонок будет помечен.

Пример 2: super.lock() Звонок будет помечен.

В примере 3 ничего не будет помечено, так как метод doX() уже выбрасывает OverlappingFileLockException и перехват метода doY() OverlappingFileLockException .

Java SE 6 добавил системное свойство sun.nio.ch.disableSystemWideOverlappingFileLockCheck для управления java.nio.channels.FileChannel.lock проверка файлов.

См. пункт 4 руководства Совместимость с Java SE 6.