Udostępnij za pośrednictwem


Funkcja File.Replace w systemie Unix zgłasza wyjątki zgodne z implementacją systemu Windows

Zachowanie File.Replace systemów operacyjnych opartych na systemie Unix uległo zmianie. Wyjątki, które zgłaszają, są teraz zgodne z tymi, które są zgłaszane przez implementację systemu Windows.

Poprzednie zachowanie

W systemie Unix z platformą File.Replace .NET 5 metoda:

  • IOException Zgłasza komunikatIs a directory, gdy sourceFileName jest plikiem i destinationFileName jest katalogiem.
  • IOException Zgłasza komunikatNot a directory, gdy sourceFileName jest katalogiem i destinationFileName jest plikiem.
  • Dyskretnie kończy się powodzeniem, gdy zarówno plik sourceFileName , jak i destinationFileName wskaże ten sam plik lub katalog.

Nowe zachowanie

W systemie Unix z platformą File.Replace .NET 6 metoda:

  • UnauthorizedAccessException Zgłasza komunikat The specified path <path> is not a path, jeśli istnieje sourceFileName lub destinationFileName nie istnieje, albo nie jest plikiem, albo gdy zarówno, sourceFileName jak i destinationFileName wskaże ten sam istniejący katalog.
  • Zgłasza komunikatThe source <sourceFileName> and destination <destinationFileName> are the same file, gdy sourceFileName i destinationFileName wskaże IOException ten sam istniejący plik.

Wprowadzona wersja

.NET 6

Typ zmiany powodującej niezgodność

Ta zmiana może mieć wpływ na zgodność źródła.

Przyczyna wprowadzenia zmiany

Ta zmiana została wprowadzona w celu zapewnienia, że File.Replace zgłasza te same wyjątki z tych samych powodów na różnych platformach.

Jeśli wywołasz metodę File.Replacetry catch w systemie Unix wewnątrz bloku, pamiętaj, aby teraz również przechwycić UnauthorizedAccessExceptionelement . Należy również pamiętać o nowych zachowaniach, które są przechwytywane.

Dotyczy interfejsów API