Według the System.Directory haddock, renameFile
może zakończyć się niepowodzeniem z kilku powodów: WystąpiłHaskell: łowienie niski poziom wyjątki IO
- HardwareFault fizyczna I/O error. [EIO]
- InvalidArgument Każdy argument operand nie jest prawidłową nazwą. [ENAMETOOLONG, ELOOP]
- isDoesNotExistError/NoSuchThing oryginalnego pliku nie istnieje, lub nie ma ścieżki do celu. [ENOENT, ENOTDIR]
- isPermissionError/PermissionDenied Proces ma niewystarczające uprawnienia do wykonywania tej operacji. [EROFS, EACCES, EPERM]
- ResourceExhausted Niewystarczające zasoby są dostępne, aby wykonać tę operację. [, ENOSPC, ENOMEM EMLINK EDQUOT,]
- UnsatisfiedConstraints ograniczenia zależne od implementacji nie są spełnione. [EBUSY]
- UnsupportedOperation Implementacja nie obsługuje zmiany nazwy w tej sytuacji. [EXDEV]
- InappropriateType Każda ścieżka odnosi się do istniejącego katalogu. [ENOTDIR, EISDIR, EINVAL, EEXIST, ENOTEMPTY]
Kilka z nich (isPermissionError, isDoesNotExistError) mają funkcje testowania, ale inni (w tym UnsupportedOperation, w którym jestem zainteresowany) nie wydaje się odpowiadać byle co. Co to jest UnsupportedOperation
i jak mogę go przetestować?
Bardziej ogólnie, w jaki sposób powinny przejść o ustaleniu co coś w tym jest. Nie widzę nigdzie w kodzie źródłowym, w którym został podniesiony, więc domyślam się, że jest to opakowanie o niższym poziomie błędu - ale jak mam sobie z tym poradzić?
Mogłabyś dając przykład? Próbuję 'IOError _ UnsupportedOperation _ _ _ _ -> Po prostu x', ale dostaję skargi na temat braku eksportu IOError/IOException. – Impredicative
Nie jestem pewien, co jest dokładnie nie tak z dopasowaniem wzorców, wygląda mi dobrze. Dodałem pełny przykład, który kompiluje i działa dla mnie. – Yuras
Hah! Wykonanie bezwarunkowego importu zupełnie mi się nie przydarzyło! Dzięki! – Impredicative