サーバー処理で例外が発生しました: インデックス: 0、サイズ: 0

理由:

 データをクエリした後、List を使用して出力パラメータを受け取りますが、List には値が存在せず、その値を取得してこのエラーを報告します。

具体原因分析:

 この例外は通常、プログラムが空のコレクションまたは配列を使用し、インデックスによってその要素にアクセスしようとしたときに発生し、プログラムがクラッシュします。

具体的には、インデックス: 0、サイズ: 0 は、プログラム内のコレクションまたは配列のサイズが 0 で、インデックス 0 の要素にアクセスしようとしたときに例外が発生したことを意味します。これは通常、次の場合に発生します。

この例外は、プログラムが空のコレクションまたは配列の要素にアクセスしようとしたときに発生しますたとえば、配列が初期化されていない場合、またはそのサイズが 0 の場合、プログラムは配列の最初の要素 (つまり、インデックス 0 の要素) にアクセスしようとし、Index: 0、Size: 0 例外が発生します。 。

この例外が発生するもう 1 つの状況は、プログラムで間違ったインデックス値が使用されている場合です。たとえば、この例外は、プログラムにサイズが 0 以下のコレクションまたは配列があり、アクセスされるインデックス値より小さい場合に発生します。

この例外を解決するには、コレクションまたは配列にアクセスする前にコレクションまたは配列が空かどうかを確認するか、アクセスするインデックス値がコレクションまたは配列のサイズより小さいかどうかを確認します。これにより、空のコレクションや配列、またはインデックス範囲外へのアクセスによるプログラムのクラッシュが回避されます。

コードデモ

List<TmOutputDTO> tmOutputDTO =tmMapper.excludeDuplicates(hos.getid());
if (tmOutputDTO!=null) {
    throw new 
ApplicationException("已存在"+tmOutputDTO.get(0).getTeamid()+ "不允许重复添加");
     }

このコードでは、tmOutputDTO が空であるかどうかを判断できません。これは、インスタンス化されたクラスであり、そのタイムリーパラメータが空であり、属性を持っているため、空であるとは判断されません。コードを次のように変更する必要があります。

List<TmOutputDTO> tmOutputDTO =tmMapper.excludeDuplicates(hos.getid());
if (tmOutputDTO.size()>0) {
    throw new 
ApplicationException("已存在"+tmOutputDTO.get(0).getTeamid()+ "不允许重复添加");
     }

このように、値は正しいです

自分の能力を野心に燃え上がらせましょう

おすすめ

転載: blog.csdn.net/qq_45656077/article/details/129662553