プログラミングをしていると、エラーメッセージに直面することがよくありますよね。この記事では、JavaとApexでよくあるエラーメッセージとその解決方法を紹介します。エラーに対する対処法を知ることで、効率的に問題を解決できるようになります。
よくあるJavaのエラーとその解決方法
1. NullPointerException
- 原因:nullオブジェクトのメソッドを呼び出そうとした場合に発生します。
- 解決方法:nullチェックを行い、オブジェクトがnullでないことを確認します。
java
// エラー例
String value = null;
System.out.println(value.length());
// 修正後
if (value != null) {
System.out.println(value.length());
} else {
System.out.println("Value is null");
}
2. ArrayIndexOutOfBoundsException
- 原因:配列の範囲外のインデックスにアクセスしようとした場合に発生します。
- 解決方法:配列の長さを確認し、正しいインデックスを使用します。
java
// エラー例
int[] numbers = {1, 2, 3};
System.out.println(numbers[3]);
// 修正後
System.out.println(numbers[2]);
3. ClassNotFoundException
- 原因:指定されたクラスが見つからない場合に発生します。
- 解決方法:クラスパスを確認し、正しいクラス名を指定します。
java
// エラー例
Class.forName("com.example.NonExistentClass");
// 修正後
Class.forName("com.example.ExistingClass");
よくあるApexのエラーとその解決方法
1. System.LimitException: Too many SOQL queries
- 原因:一度のトランザクションで使用されるSOQLクエリの数が制限を超えた場合に発生します。
- 解決方法:SOQLクエリの数を減らす、またはバッチ処理を使用します。
apex
// エラー例
for (Integer i = 0; i < 100; i++) {
Account acc = [SELECT Id FROM Account WHERE Name = :name];
}
// 修正後
List<Account> accList = [SELECT Id FROM Account WHERE Name IN :names];
for (Account acc : accList) {
// 処理
}
2. System.QueryException: List has no rows for assignment to SObject
- 原因:SOQLクエリが結果を返さない場合に発生します。
- 解決方法:結果が存在することを確認し、Listでクエリ結果を処理します。
apex
// エラー例
Account acc = [SELECT Id FROM Account WHERE Name = 'NonExistentName'];
// 修正後
List<Account> accList = [SELECT Id FROM Account WHERE Name = 'NonExistentName'];
if (accList.isEmpty()) {
System.debug('No accounts found');
} else {
Account acc = accList[0];
}
3. System.DmlException: Insert failed. First exception on row 0; first error: FIELD_CUSTOM_VALIDATION_EXCEPTION
- 原因:カスタムバリデーションルールがトリガーされた場合に発生します。
- 解決方法:バリデーションルールを確認し、入力データがルールに従っていることを確認します。
apex
// エラー例
Account acc = new Account(Name = 'Test Account');
insert acc;
// 修正後
Account acc = new Account(Name = 'Valid Account Name');
insert acc



コメントを残す