Python'da tek satırlık istisna tutma ifadesi yapmak mümkün değildir. Bunu yapmak için bir işlev yazılabilir.
def safe_execute(default, exception, function, *args):
try:
return function(*args)
except exception:
return default
Örnek kullanımı: bu davranış arzu edilmez
from time import sleep
safe_execute(
"Panic!",
Exception,
sleep, 8
)
# Ctrl-c will raise a KeyboardInterrupt
from sys import exit
safe_execute("Failed to exit!", Exception, exit)
# Exits the Python interpreter
ise:
from json import loads
safe_execute("Oh no, explosions occurred!", TypeError, loads, None)
# Returns "Oh no, explosions occurred!"
safe_execute("Huh?", TypeError, int, "10")
#Returns 10
fazla parametre hata yakalama işlemi yine de kesilebilen
from operator import div
safe_execute(
"Divsion by zero is invalid.",
ZeroDivisionError,
div, 1, 0
)
# Returns "Divsion by zero is invalid."
safe_execute(
"Divsion by zero is invalid.",
ZeroDivisionError,
div, 1, 1
)
# Returns 1.
desteklenir ,
BaseException
kullanın:
from time import sleep
safe_execute("interrupted",
BaseException,
sleep, 8)
#Pressing Ctrl-c will return "interrupted"
from sys import exit
safe_execute("Naughty little program!",
BaseException,
exit)
#Returns "Naughty little program!"
Neden koymak değil standart 'fonksiyonu içine try..except'? – TigerhawkT3
@Slayer İlginç bir şekilde, Python aslında bir dizgeyi (veya başka bir nesneyi) "or" için bir "alternatif" olarak kullanacaktır. '0 veya“ Var değil. ”' 'Geri dönmez' '. (Ben test ettim.) – 2Cubed
@ TigerhawkT3 'divide_one_by' işlevinin içsellerine erişimim yok - bağımlılık olarak kullandığım ayrı bir modülde tanımlanmış olduğunu varsayalım. – 2Cubed