我最近听说过使用语句
处理python异常的可能性try:
和
except WhateverError:
我只是想知道在定义下一堂课时是否使用它是个好主意。 它应该代表一个地形。矩阵的每个数字代表它的坐标,数字是该坐标的高度。
class base_terreny(object):
# create default mxn terrain #
def __init__(self, rows, columns):
self.rows=rows
self.columns=columns
self.terrain=[[0]*columns for _ in range(rows)]
def __getitem__(self, pos): #return height of coordinate
try:
return self.terrain[pos[1]][pos[0]]
except (IndexError,TypeError):
return 0
def __setitem__(self, pos, h): #set height
try:
self.terrain[pos[1]][pos[0]]=h
except (IndexError,TypeError):
return None
或者最好这样做:
if pos[0]<=self.columns and pos[1]<=self.rows:
self.terrain[pos[1]][pos[0]]=h
答案 0 :(得分:3)
两种方式都可以接受,但使用第二种方式可能更清晰。虽然异常通常很有用,但实际上您尝试使用异常进行测试的是第二种技术。虽然在这种情况下确实无关紧要,但通常认为使用if语句会更好,除非您实际上尝试以不同方式处理错误。在不同的情况下,可能会有其他事情,而不是您要测试的可能会触发错误的事情。