-2

誰かが私のメソッドを呼び出した場合、防御的に問題に対処したいと考えています。通常、私はただ戻りnullます。

を実装することにしましたが、とにかくtry catch戻ってしまうようです。null

try catchメソッドの最後で返されないようにmy を書くことはできnullますか?

peekStack クラスで使用するサンプル コード。

    public T peek()
    {
        T temp = null;

        try
        {
            temp = array[size]; 
        }

        catch(Exception e)
        {
        }

        return temp;
    }

空のスタックで呼び出された場合。戻りnullます。

try catchでは、この種のケースの場合でも気にする必要がありますか? 私はこれをしたくなる:

if(isEmpty())
   return null;

スタックが空でない場合は、要素を返します。スタック空の場合、try-catch?

4

3 に答える 3

1

メソッドは何かを返すか、例外をスローする必要があります。無制限のジェネリック型がある場合、null オブジェクト パターンなどは使用できないため、オプションはを返すか、 のようなnullものを含むものを返すか、例外をスローします。TOptional<T>

の安全性が気に入らない場合は、Java 8 またはライブラリからnullを使用できます。Optionalチェック例外も同様の安全性を備えていますが、ここでは不適切です。

于 2014-06-04T20:59:32.230 に答える
1

array[size]配列がnullであるか、サイズが配列の長さを超えていない限り、例外をスローすることを想像するのは困難です。だから、あなたはこのようなことをすることができます -

 if (array != null && array.length > size) {
   return array[size - 1]; // assuming your size starts at 1
 }
 return null; // need to return something, if not null you need an option type.

編集

または、Optionモナドを使用して - など、

 if (array != null && array.length > size) {
   return new Some<T>(array[size - 1]); // assuming your size starts at 1
 }
 return new None<T>(); 
于 2014-06-04T20:31:56.033 に答える