1

Salesforce カスタム Apex クラスで例外をキャッチしようとしましたが、うまくいかないようです。

この場合、環境を初期化するコントローラーコンストラクターがあり、コンストラクターで例外をキャッチしようとしていますが、機能しません。例外はキャッチされません。

public MyController(){
  try{
    this.myVar = ApexPages.currentPage().getParameters().get('myParam');
    ....

   }
   catch( System.StringException se ){
     ..
   }
   catch( System.NullPointerException ne ){
     ..
   }
   catch( Exception e ){
     ..
   }
  ....
}
4

2 に答える 2

1

@mmixに同意。

次の操作で例外が発生することはありません。

ApexPages.currentPage().getParameters().get('myParam');

実際、NPE(NullPointerException) をキャッチするのは悪い習慣です。これらはランタイム例外であり、NPE 例外に依存するのではなく、変数 != null または variable == null をチェックする必要があるためです。このように try catch ブロックを使用すると、コード フローの維持と理解が難しくなります。

于 2011-04-20T05:17:33.320 に答える
0

ここでキャッチするものは何もありません

currentPage()コントローラ/拡張機能の内部の場合はnullではありません

getParameters()パラメータリストが空の場合でもnullではありません

get('myParam')nullを返す場合と返さない場合がありますが、その値がmyVarに格納されるかどうかは関係ありません。

後でmyVarのインスタンスメンバーを参照しようとした場合にのみ、System.NullPointerExceptionnullmyVarをデータベースに保存しても有効です。

于 2011-04-19T08:39:22.967 に答える