문제

요구 사항 : 오류 (예외를 제외)에서 처리중인 파일은 오류가있는 파일의 폴더로 이동해야합니다 (App.Config 설정).

문제 : 이것을 처리 할 수있는 유일한 방법은 파일을 이동하려는 메인 시도/캐치 내부에서 중첩 시도/캐치를 갖는 것입니다. 디렉토리가 존재하고 권리가 부여되도록 최선을 다할 수는 있지만 네트워크 드라이브이기 때문에 어느 시점에서 오류가 발생한다는 것을 알고 있습니다.

예시

Try
   (Do Some Logic, but an error happens)
Catch ex As Exception
   Try
       (Attempt to move file)
   Catch exinner as Exception
       Throw New Exception("Cannot move file to Error Directory", innerex)
   End Try
   (Raise Error Event for logging by form/batch app)
End Try

실제로 그것은 내가 생각했던 것보다 훨씬 더 끔찍한 일이 생겼습니다.

이제 나는 내가 뭔가 잘못하고 있다는 것을 알고 있습니다. 캐치에서 발생할 수있는 오류를 어떻게 처리하려고 노력해야하는지, 여전히 파일을 움직여 내 이벤트를 호출하려고 시도해야합니까?

도움이 되었습니까?

해결책

모든 것이 나에게 좋아 보인다. 캐치 내부에 캐치 블록을 시도하는 것이 완벽하게 합리적입니다. 당신이 언급 한 모든 것을 확인할 수는 있지만 항상 네트워크가 내려갈 가능성이 있거나 Plain이 해당 파일을 작성할 수 없을 가능성이 있습니다. 그 후 당신이하는 일은 당신에게 달려 있습니다. 오류 메시지와 일시 정지 처리는 합리적으로 보입니다.

다른 팁

예외 만 사용할 때 정확히 수행하는 방법입니다. 플래그 사용을 고려할 수도 있지만 더 나은 것은 아닙니다.

(Set file processing error flag to false)
Try
   (Do Some Logic, but an error happens)
Catch ex As Exception
   (Set file processing error flag to true)
End Try

IF (file processing error flag = true)
   Try
       (Attempt to move file)
   Catch exinner as Exception
       Throw New Exception("Cannot move file to Error Directory", innerex)
   End Try
   (Raise Error Event for logging by form/batch app)
End Try

그다지 좋지 않다 ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top