2017-09-14 2 views
1

Est-ce que quelqu'un sait si vous pouvez intercepter les erreurs d'erreur en python? Je travaille sur un script qui mappe les lecteurs réseau. Si l'utilisateur final tape le nom d'un chemin qui n'existe pas, aucune erreur n'apparaît et cela pourrait poser problème. J'utilise le module de sous-processus, avec python version 3.6, avec l'IDE de pycharm. Si je mappe à un emplacement qui n'existe pas, j'obtiens l'erreur suivante "Erreur système 53. Le chemin réseau n'a pas été trouvé."Impossible d'intercepter l'erreur avec le sous-traitement

Enfin, j'ai essayé d'intercepter l'erreur en utilisant OSError, Exception et BaseException. Chacun que j'ai utilisé ne renvoie aucun message d'erreur.

Voici un exemple du script que je cours.

def StoreInfo(): 
receiving = input("Enter receiving: ") 
try: 
    subprocess.call(r'net use y: \\' + receiving + '\\act\\rto\\transent', shell=True) #timeout=30 
except OSError: 
    #print("An unexpected error:" , sys.exc_info()[0]) 
    print(sending+"'s path does not exit!") 

StoreInfo()

+1

Il est parce que personne ne python Excpetion est élevé. "Erreur système 53. Le chemin réseau n'a pas été trouvé" - c'est l'erreur Windows, pas python –

+0

si vous utilisez 'subprocess.check_call' il devrait aussi vous donner le code retour du processus, la plupart sortent avec 0 pour le succès et tout autre nombre pour indiquer diverses conditions d'erreur mais @YaroslavSurzhikov est correct, aucune erreur de python n'est soulevée par ceci, c'est pourquoi vous ne pouvez pas l'attraper. –

Répondre

0

Python »Documentation Subprocess

try: 
    retcode = call("mycmd" + " myarg", shell=True) 
    if retcode < 0: 
     print >>sys.stderr, "Child was terminated by signal", -retcode 
    else: 
     print >>sys.stderr, "Child returned", retcode 
except OSError as e: 
    print >>sys.stderr, "Execution failed:", e