我对Python比较陌生,我正在努力学习一两件关于课程的知识。我有一些函数经验,我试图理解类是如何工作的。我的问题是关于错误处理。
通常使用函数,我可以执行一些操作,如果出现问题,我可以简单地返回False并在调用函数的位置验证它,然后继续执行其余的代码。
我怎样才能在课程中做到这一点?
我有一个简单的类,有一个简单的方法,比如说:
my_object = MyObj()
my_object.swim()
当我让my_object“游泳”时,我希望能够以简单的方式处理错误或问题。 例如:
执行def swim(..)期间:我希望能够返回False或引发不同的错误并处理它们而不会完全中断应用程序。
即。我想:
try:
my_object.swim()
except:
# it can not swim. I want it to tell me why or just tell me "False" so I can execute another codeblock and tell it to perhaps .walk_away()
我读过关于try / except块,引发错误,它们是什么类的内容。但是它没有做我喜欢的,也就是尝试执行一个方法并处理该方法执行的结果(也许是真,假或其他错误?)
我怎样才能在Python中执行此操作?
谢谢。
答案 0 :(得分:5)
您将执行以下操作:
class MayNotSwimException(Exception):
def __init__(reason):
self.reason = reason
class Person(object):
def __init__(self, can_swim):
self.can_swin = can_swim
def swim(self):
if self.can_swim:
self.do_something()
else:
raise MayNotSwimException("I can't swim because...!")
def walk_away(self):
self.do_something_else()
p = Person(can_swim = False)
try:
p.swim():
except MayNotSwimException as e: # In python 2.5-, use MayNotSwimException, e
print "That person can't swim because", e.reason
p.walk_away()
例外情况可用于:
try/except
区块)MayNotSwimBecauseDoesntWantException
和MayNotSwimBecauseFeelsSleepyException
并单独捕获它们)或通过异常对象本身的属性(e.reason
)来实现。 请have a look at the documentation获取更详细的解释!
答案 1 :(得分:2)
将try..except或其他形式的检查失败(和反应代码)放在swim方法本身。例外不一定是致命的,但我建议你限制它们在正常条件可以使用的地方使用,以保持代码清洁。