Nach the System.Directory haddock, renameFile
mit einer Reihe von Gründen fehlschlagen:Haskell: Fang niedriges Niveau IO Ausnahmen
- HardwareFault Ein physikalischen I/O-Fehler ist aufgetreten. [EIO]
- InvalidArgument Entweder der Operand ist kein gültiger Dateiname. [ENAMETOOLONG, ELOOP]
- isDoesNotExistError/NoSuchThing Die ursprüngliche Datei existiert nicht oder es gibt keinen Pfad zum Ziel. [ENOENT, ENOTDIR]
- isPermissionError/PermissionDenied Der Prozess verfügt nicht über ausreichende Berechtigungen zum Ausführen des Vorgangs. [EROFS, EACCES, EPERM]
- ResourceExhausted Es sind nicht genügend Ressourcen verfügbar, um den Vorgang auszuführen. [EDQUOT, ENOSPC, ENOMEM, EMLINK]
- Unbefriedigte Bedingungen Die implementierungsabhängigen Bedingungen sind nicht erfüllt. [EBUSY]
- Nicht unterstützteOperation Die Implementierung unterstützt das Umbenennen in dieser Situation nicht. [EXDEV]
- InadäquateTyp Jeder Pfad verweist auf ein vorhandenes Verzeichnis. [ENOTDIR, EISDIR, EINVAL, EEXIST, ENOTEMPTY]
Ein paar von diesen (isPermissionError, isDoesNotExistError) Testfunktionen haben, aber andere (einschließlich UnsupportedOperation, in der ich bin interessiert) scheinen nicht zu entsprechen etwas. Was ist UnsupportedOperation
und wie kann ich es testen?
Allgemein gesagt, wie soll ich herausfinden, was so etwas ist. Ich kann nirgendwo im Quellcode sehen, wo es sich befindet, also vermute ich, dass es sich um einen Fehler auf niedrigerer Ebene handelt - aber wie soll ich damit umgehen?
Möchten Sie ein Beispiel etwas dagegen zu geben? Ich versuche 'IOError _ UnsupportedOperation _ _ _ _ -> Just x' aber Beschwerden über nicht exportiere IOError/IOException. – Impredicative
Ich bin nicht sicher, was genau stimmt mit Ihrem Mustervergleich, es sieht für mich in Ordnung. Ich fügte ein vollständiges Beispiel hinzu, das kompiliert und für mich arbeitet. – Yuras
Hah! Es ist mir nicht gelungen, einen unqualifizierten Import durchzuführen! Vielen Dank! – Impredicative