例外機構のオーバーヘッドが無駄なので普通は try-catch ではやらない。
p が platform.size() 以下かどうかを判断しる。というかその API 設計じゃ
p が任意でシーケンシャルアクセスする保証がならもっと防衛的コーディングしる。

while(p>=platform.size()){
  platform.add(new ArrayList<Channel>());
}
platform.get(p).add(c);