Existe-t-il un moyen en Python de déclencher une erreur qui a une autre erreur comme cause?

En Java, vous pouvez créer une instance d'une exception avec une cause telle que dans le code suivant

try {
    throw new IOException();
} catch (IOException e) {
    throw new RuntimeException("An exception occurred while trying to execute", e);
}

résultant en ce message d'erreur:

Exception in thread "main" java.lang.RuntimeException: An exception occurred while trying to execute
    at thing.Main.main(Main.java:11)
Caused by: java.io.IOException
    at thing.Main.main(Main.java:9)

Notez que la première exception (dans la trace de pile) est "provoquée par" la seconde.

C'est, à mon avis, un excellent moyen de montrer à un utilisateur de l'API qu'une erreur de niveau supérieur s'est produite lors d'un appel, et le développeur peut la déboguer en examinant l'exception de niveau inférieur qui est la "cause" de la plus haute- erreur de niveau (dans ce cas, la RuntimeException est provoquée par la IOException).

Avec les recherches que j'ai faites, je n'ai rien trouvé sur le fait d'avoir une erreur comme cause d'une autre en Python. Cela peut-il être réalisé en Python? Comment? Et sinon, quel serait un équivalent Pythonique?

3
Zakru 14 janv. 2020 à 14:01