File.Replace sur Unix lève des exceptions pour correspondre à l’implémentation Windows
Le comportement de File.Replace sur les systèmes d’exploitation Unix a changé. Les exceptions qu’il lève correspondent désormais à celles levées par l’implémentation Windows.
Comportement précédent
Sur Unix, avec .NET 5, la méthode File.Replace :
- Lève IOException avec le message
Is a directory
quandsourceFileName
est un fichier etdestinationFileName
est un répertoire. - Lève IOException avec le message
Not a directory
quandsourceFileName
est un répertoire etdestinationFileName
est un fichier. - Réussit en mode silencieux lorsque
sourceFileName
etdestinationFileName
pointent vers le même fichier ou répertoire.
Nouveau comportement
Sur Unix, avec .NET 6, la méthode File.Replace :
- Lève UnauthorizedAccessException avec le message
The specified path <path> is not a path
, quandsourceFileName
oudestinationFileName
existe et n’est pas un fichier ou lorsquesourceFileName
etdestinationFileName
pointent vers le même répertoire existant. - Lève IOException avec le message
The source <sourceFileName> and destination <destinationFileName> are the same file
quandsourceFileName
etdestinationFileName
pointent vers le même fichier existant.
Version introduite
.NET 6
Type de changement cassant
Ce changement peut affecter la compatibilité source.
Raison du changement
Ce changement a été apporté pour s’assurer que File.Replace lève les mêmes exceptions pour les mêmes raisons sur les plateformes.
Action recommandée
Si vous appelez File.Replace sur Unix à l’intérieur d’un bloc try catch
, veillez à intercepter UnauthorizedAccessException également. En outre, tenez compte des nouveaux comportements qui sont interceptés.