2

人を要求し、人IDを返す機能があります。ただし、メソッドが障害を検出した場合、エラーを返したい(説明付き?)。

だから、私の関数は次のようになります:

 public int GetPersonId(string username)
 {
     //Logic
     return personId;
 }

ロジック内で、procを呼び出し、IDを返します。ただし、結果が返されない場合は、-1を返し、それを呼び出し元のコードで処理できますが、これは良くないと感じています。

例外を作成して、それを試して/キャッチする方が良いでしょうか、それとも何ですか?私は一度読んだと思いますが、ビジネスタイプのルールに例外をスローすることは良い習慣ではありません。

これに対処するための最良の方法は何ですか。

さらに、procは、「人は存在するが、削除済みとしてマークされている」、「そのような人は存在しない」などの他のステータスを返す可能性があります。つまり、複数の「例外」があります。

4

4 に答える 4

1

私は2つのオプションを考えることができます

  1. 関数内で例外をスローします

    throw new Exception("Some Message");

  2. 返品タイプを変更します。intの代わりにintを返しますか?nullエラーがある場合はelse値を返します。

于 2012-07-12T00:51:17.700 に答える
0

はい、Exceptionクラスを継承して独自の例外を作成することも、この方法で作成することもできます。例外 throw new Exception("Error in Person.GetPersonId");をキャッチしてエラーロガーにログインする限り、どちらの方法でもメッセージが表示されるため、問題はありません。

これがメッセージで報告したい唯一の場所である場合は、上記のインラインコードを使用しますが、頻繁に必要になり、さまざまなタイプの例外をカスタマイズしたい場合は、グッドプラクティスとして独自の例外を作成してください

于 2012-07-12T00:51:58.510 に答える
0

関数のエラーとそうでないものを明確に区別する必要があると思います。結果が見つからないという事実がエラーである場合(そうであるかどうかを定義できるのはあなただけです)、例外をスローします。エラーでない場合(出力の可能性があるため)、コードまたは必要なものを返します。呼び出し元のコードがそれを管理する必要があります。ただし、プログラムのロジックを処理するために例外処理を使用しないでください。間違っています

于 2012-07-12T00:54:15.610 に答える
0

1.一部のメッセージを返したい場合は、戻りタイプを文字列に変更できます。そして、Callingprocで文字列型を処理します。2.次のようなメッセージで例外をスローできます

throw new  Exception("what's wrong")

そして、あなたはそれを捕まえるためにtry / catchを使うことができます!

于 2012-07-12T00:55:57.270 に答える