1. Bash (Linux/MacOS):
Αυτή η προσέγγιση χρησιμοποιεί τον ενσωματωμένο χειρισμό σφαλμάτων και την ανακατεύθυνση του Bash:
`` `bash
#!/bin/bash
command_to_execute ="some_invalid_command arg1 arg2"
$ command_to_execute 2> &1> errorlog.txt
Εάν [$? -ne 0]; τότε
echo "Command" $ command_to_execute "απέτυχε. Δείτε το errorlog.txt για λεπτομέρειες."> &2
fi
`` `
* `2> &1`:Αυτό ανακατευθύνει το τυπικό σφάλμα (stderr, περιγραφέας αρχείων 2) στην τυπική έξοδο (stdout, περιγραφέας αρχείων 1). Αυτό εξασφαλίζει τόσο τα μηνύματα σφάλματος όσο και οποιαδήποτε έξοδο από την εντολή καταγράφονται στο `errorlog.txt`.
* `> errorlog.txt`:Αυτό ανακατευθύνει το stdout (το οποίο τώρα περιλαμβάνει επίσης stderr) στο αρχείο` errorlog.txt`. Οποιοδήποτε υπάρχον περιεχόμενο στο αρχείο θα αντικατασταθεί. Για να προσθέσετε αντί για αντικειμενικά, χρησιμοποιήστε `>> errorlog.txt`.
* `$?`:Αυτή η μεταβλητή διατηρεί την κατάσταση εξόδου της πιο πρόσφατα εκτελεσμένης εντολής. Το 0 υποδεικνύει την επιτυχία, ενώ οποιαδήποτε άλλη τιμή υποδεικνύει την αποτυχία.
2. PowerShell (Windows):
Το PowerShell προσφέρει πιο εξελιγμένο χειρισμό σφαλμάτων:
`` `PowerShell
$ command ="some_invalid_command arg1 arg2"
Δοκιμάστε {
&$
}
αλίευση {
# Γράψτε το μήνυμα σφάλματος στο αρχείο καταγραφής.
$ _. Εξαίρεση.Message | Out -file -filepath "errorlog.txt"
Η εγγραφή-σφάλμα "Command '$ command' απέτυχε. Δείτε το errorlog.txt για λεπτομέρειες."
}
`` `
* Δοκιμάστε ... Catch`:Αυτό το μπλοκ χειρίζεται πιθανές εξαιρέσεις κατά την εκτέλεση εντολών.
* `$ _. Εξαίρεση.Message`:Αυτό εξάγει το μήνυμα σφάλματος από το αντικείμενο εξαίρεσης.
* `Out -file -filepath" errorlog.txt "-append`:Αυτό προσθέτει το μήνυμα σφάλματος στο αρχείο` errorlog.txt`.
3. Python (cross-platform):
Η Python επιτρέπει περισσότερο προγραμματικό έλεγχο και είναι ανεξάρτητη από την πλατφόρμα:
`` `Python
υπο -επεξεργασία εισαγωγής
Εισαγωγή sys
Command =["some_invalid_command", "arg1", "arg2"]
δοκιμή:
αποτέλεσμα =subprocess.run (εντολή, stderr =subprocess.pipe, text =true, check =true)
#Εάν είναι επιτυχής, το αποτέλεσμα θα είναι άδειο.
εκτός από το subprocess.calledProcessError ως e:
με ανοιχτό ("errorlog.txt", "a") ως f:
F.Write (F "Command '{Command}' απέτυχε με τον κωδικό επιστροφής {e.ReturnCode}:\ n")
F.Write (e.stderr + "\ n")
εκτύπωση (F "Command '{Command}' απέτυχε. Δείτε το errorLog.txt για λεπτομέρειες.", File =Sys.stderr)
Εκτός από το FileNotFounderRor:
με ανοιχτό ("errorlog.txt", "a") ως f:
F.Write (F "Command '{Command}" δεν βρέθηκε. \ n ")
Εκτύπωση (F "Command '{Command}' Δεν βρέθηκε. Δείτε το errorLog.txt για λεπτομέρειες.", File =sys.stderr)
`` `
* `subprocess.run`:Αυτό εκτελεί την εντολή.
* `stderr =subprocess.pipe`:καταγράφει stderr.
* `text =true`:Εξασφαλίζει ότι η έξοδος αποκωδικοποιείται ως κείμενο.
* `check =true`:δημιουργεί μια εξαίρεση εάν η εντολή επιστρέψει έναν κωδικό εξόδου μη μηδέν.
* Το `filenotfounderror 'αντιμετωπίζεται ρητά για την αντιμετώπιση εντολών που δεν υπάρχουν.
Θυμηθείτε να αντικαταστήσετε το `" some_invalid_command arg1 arg2 "με την πραγματική σας εντολή. Τα παραδείγματα χρησιμοποιούν `errorlog.txt`, αλλά μπορείτε να επιλέξετε οποιοδήποτε όνομα αρχείου προτιμάτε. Πάντα να εξετάζετε τον κατάλληλο χειρισμό σφαλμάτων για να αποτρέψετε την κατάρρευση του σεναρίου σας απροσδόκητα. Το παράδειγμα Python καταδεικνύει ισχυρό χειρισμό σφαλμάτων. Συνιστάται να υιοθετήσετε μια παρόμοια προσέγγιση για πιο σύνθετα σενάρια.
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα