檢查 FileChannel.lock() 方法的 OverlappingFileLockException

此規則會標示是否使用 java.nio.channels.FileChannel.lock() 方法。 在 Java SE 6 中, lock() 方法現在擲出 java.nio.channels.OverlappingFileLockException .

此規則將標示 lock() 沒有 try/catch 區塊的方法 OverlappingFileLockException 或周圍方法不擲出 OverlappingFileLockException .

範例 1:

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

範例 2:

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

範例 3:

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

在範例 1 中, fc.lock() 將會被標示。

在範例 2中, super.lock() 將會被標示。

在範例 3 中,不會標示任何項目,因為 doX() 方法已擲出 OverlappingFileLockException 及 doY() 方法 catch OverlappingFileLockException .

Java SE 6 已新增系統內容 sun.nio.ch.disableSystemWideOverlappingFileLockCheck 控制 java.nio.channels.FileChannel.lock 檔案檢查行為。

如需相關資訊,請參閱 Java SE 6 相容性手冊中的第 4 項。