Po pierwsze, nie jestem pewien, czy moje podejście jest właściwe, więc jestem otwarty na różne sugestie.Często powtarzana próba/z wyjątkiem Python
Jeśli instrukcje try/except są często powtarzane w kodzie?
try:
# Do similar thing
os.remove('/my/file')
except OSError, e:
# Same exception handing
pass
try:
# Do similar thing
os.chmod('/other/file', 0700)
except OSError, e:
#Same exception handling
pass
Na przykład za działania jednej linii można zdefiniować obsługi opakowanie wyjątku, a następnie przekazać funkcję lambda:
def may_exist(func):
"Work with file which you are not sure if exists."""
try:
func()
except OSError, e:
# Same exception handling
pass
may_exist(lambda: os.remove('/my/file'))
may_exist(lambda: os.chmod('/other/file', 0700))
Czy to „rozwiązanie” po prostu zrobić rzeczy mniej oczywiste? Czy powinienem w pełni napisać wszystkie instrukcje try/except?
możliwe duplikat [Python: Try-chyba jako wyrażenie] (http://stackoverflow.com/questions/7088009/python-try-except-as -an-expression) – agf
Me and @kindall właśnie wczoraj odpowiedziały na to pytanie bardzo ładnie. – agf
@agf: To pytanie wydaje się częściowo powiązane, dzięki za linkowanie. Jednak odpowiedź Neda Batcheldera ma tę zaletę, że nie ma potrzeby tworzenia funkcji poza blokiem kodu, dla którego wyjątki muszą zostać przechwycone. – sutre