14

MATLAB 例外 (MException オブジェクト) を作成するか、警告またはエラー メッセージを出力する場合、MATLAB では、スローする例外を定義するメッセージ ID を指定できます。

メッセージ ID の形式は次のとおりです。

component:mnemonic

たとえば、MATLAB 独自の未定義変数メッセージ ID は次のとおりです。

MATLAB:dispatcher:nameConflict

独自のコードで例外を使用する場合、メッセージ ID には何を使用しますか? MATLAB のデフォルトのものを再利用しますか? 自分で作る?コンポーネント文字列とニーモニック文字列には何を使用しますか?

4

2 に答える 2

12

私は通常、エラー (または警告)メッセージ識別子に対して次のパターンに従います。括弧内のものが存在する場合と存在しない場合があります。

(className):(parentFunction):functionWhereErrorOccurs:descriptiveMnemonic

コンポーネントは次のとおりです。

  • className: エラーが発生した関数がメソッド/コンストラクターの場合、クラスの名前。

  • parentFunction: エラーが発生した関数が m ファイルまたは入れ子関数のサブ関数である場合、これはそれぞれプライマリ m ファイル関数または入れ子関数の親になります。したがって、複数のコンポーネントを持つことができます。parentFunction

  • functionWhereErrorOccurs: このコンポーネントの名前は一目瞭然です。;)

  • descriptiveMnemonic:説明を強調します。たとえば、inputError実際には何も教えてくれませんが、notEnoughInputs十分な引数を渡さなかったことが明らかになります。ニーモニックには常に小文字のキャメル ケースを使用します。最初の単語を除いて、単語の最初の文字は大文字になります。

クラスプロパティが親 m-file への完全なパスとエラーの行番号をすでに識別しているため、 コンポーネントclassNameparentFunctionコンポーネントは多少冗長であると見なすことができます。ただし、メッセージ識別子の目的の 1 つは、エラーの原因を突き止める以外の目的でエラーを一意に識別できるようにすることです。stackMException

をオーバーロードする関数myFcnとクラスがあるとします。最初のエラー メッセージ ID を に、2 番目のエラー メッセージ ID を にすると、たとえば、DBSTOPでブレークポイントを設定して、このエラーが によって生成され、 ではなくによって生成された場合にのみ実行を停止することができます。同様に、一意の警告メッセージ識別子は、特定の機能からの警告を無視し、他の機能を表示させるように明確に選択できるという点で便利です。myClassmyFcnmyFcn:maxIterationsReachedmyClass:myFcn:maxIterationsReachedmyClass\myFcnmyFcn

さらに、エラーが発生した関数がパッケージ フォルダーまたはプライベート フォルダーにあることを示すコンポーネントを識別子に含めることもできます(ただし、かなり長い識別子になる可能性があります)。

于 2010-06-24T15:26:16.430 に答える
3

私の仕事では、YMA:(mainFunctionName):(descriptiveMnemonic) を使用しています。ここで、YMA は単に私のイニシャルです。たとえば、私のUIInspect ユーティリティで呼び出されたすべての警告とエラーには、YMA:uiinspect:XXX.

于 2010-06-24T17:51:30.550 に答える