1

私は最近、ステートメントを使用して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
4

1 に答える 1

3

どちらの方法も受け入れられますが、おそらく 2 番目の方法を使用する方がクリーンです。例外は便利な場合が多いですが、例外を使用して実際にテストしようとしているのは 2 番目の手法です。この場合は問題ありませんが、実際に別の方法でエラーを処理しようとしない限り、通常は if ステートメントを使用する方がよいと見なされます。別の状況では、テスト対象以外の原因でエラーが発生する可能性があります。

于 2013-11-18T00:25:27.363 に答える