此規則會標示使用的 java.nio.channels.FileChannel.lock() 方法。 在 Java SE 6 中,lock() 方法現在會擲出 java.nio.channels.OverlappingFileLockException。
此規則會標示沒有包含 OverlappingFileLockException 之 try/catch 區塊,或其外括方法不會擲出 OverlappingFileLockException 的 lock() 方法。
範例 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() 方法會捕捉 OverlappingFileLockException。
Java SE 6 已新增系統內容 sun.nio.ch.disableSystemWideOverlappingFileLockCheck 來控制 java.nio.channels.FileChannel.lock 檔案檢查行為。
如需相關資訊,請參閱 Java SE 6 相容性手冊中的第 4 項。