Ich frage mich, ob das Auslösen von Ausnahmen der beste Weg ist, dem Benutzer etwas mitzuteilen, falls der Benutzer ein anderer Programmierer ist.Python: wirft eine Ausnahme einen korrekten Anwendungsfall in diesem Beispiel?
Ich entwickle eine kleine Bibliothek, um Text-basierte Spiele zu erstellen (denke Dwarf Fortress, aber extrem einfacher). Natürlich möchte ich, dass sich Sachen innerhalb der Karte bewegen. Es ist sehr einfach und der Docstring ist sehr vollständig, so sollte es gut lesen.
def move(self, tile):
"""Move the object to a tile.
That means: unlink the piece from its current tile and link it
to the new tile.
Raise CharacterIsNotOnATileError if piece didn't already
have an associated tile, CharacterIsNotOnThisBoardError if
the destinity tile is not on the same board as the current tile,
OutOfBoard error if destinity tile is falsey (most probably
this means you're tring to move somewhere outside the map)
"""
if tile.piece is not None:
raise PositionOccupiedError(tile)
if not self.home_tile:
raise PieceIsNotOnATileError
if self.home_tile.board is not tile.board:
raise PieceIsNotOnThisBoardError
if not tile:
raise OutOfBoardError
self.home_tile.piece = None
tile.piece = self
Ist diese Struktur schlecht? Ich denke, es liest schön: wenn der Benutzer ein Stück seiner eigenen zu bewegen versucht, kann er tun:
try:
character.move(somewhere)
except PositionOcuppiedError:
character.punish # cause i'm in hardcore
except OutOfBoardError:
character.kill # cause we were in a floating world and the
# character just fell off
Es gibt einige weitere Logik in der wie folgt umgesetzt: Bibliothek, wo der Code etwas zu tun versucht, aber Wenn dies nicht möglich ist, wird eine Ausnahme ausgelöst. Ist das ok? Oder vielleicht sollte ich Fehlercodes (als Integer zum Beispiel) zurückgeben.
Sehr interessant liest. Vielen Dank! – joaquinlpereyra