[解決済み] try catch ArrayIndexOutOfBoundsException?
2022-01-29 07:41:11
質問
私のプロジェクトは、寸法25×20のグリッド上を移動する小さなアイコンで構成されています。私はいくつかのif/elseブロックで簡単にこれを行うことができることを知っているが、私はエラー処理についてもっと学びたい。
私が考えていたのは try catch を使うことでしたが、これでは配列のインデックスが範囲外である例外や、配列のインデックスが範囲外である例外をキャッチできません。
Exception
エラーやポジションを返さないので、catch ブロックに行くことはありません。
このような疑似コードを考えていました。
try {
// Code
} catch(The exception) {
x - 1 or + 1
}
実際のコード
public void tick() {
Random rand = new Random();
try {
int x, y;
x = rand.nextInt(3) + (-1); //Slumpar fram en siffra (-1, 0, 1)
y = rand.nextInt(3) + (-1);
setPosition(new Point((int)getPosition().getX()+x,(int)getPosition().getY() + y));
} catch(Exception e) {
System.out.println("error");
}
System.out.println("x: " + getPosition().getX());
System.out.println("y: " + getPosition().getY());
}
public String type() {
return "Dummy";
}
解決方法は?
あなたのコードのどこにも配列が見当たらないので、おそらくtryブロックが何もキャッチしていないのでしょう(呼び出されたメソッドのいずれかに配列があるのでしょうか)。また、プログラムが配列の境界の外側を読み取ることを許可してはいけません。これは悪い設計です。とはいえ、私が考える最も明確な方法で例外をキャッチする方法は次のとおりです。
try {
array[index] = someValue;
}
catch(ArrayIndexOutOfBoundsException exception) {
handleTheExceptionSomehow(exception);
}
あるいは、@Peerhenry が提案するように、インデックスが正しくない場合に新しい Exception を投げるようにすれば、より良い設計になるでしょう。
関連
-
[解決済み】Android Studio クラス org.codehaus.groovy.runtime.InvokerHelper を初期化できませんでした。
-
[解決済み] java.sql.SQLException: ユーザー 'root'@'localhost' (using password: YES) のためのアクセスが拒否されました。
-
[解決済み】このコンパイルユニットは名前付きモジュールに関連しているため、名前付きパッケージeclipseを宣言する必要があります。
-
[解決済み】代入の左手は必ず変数 CharAt
-
[解決済み] 二項演算子「&」のオペランド型がおかしい java
-
[解決済み】Javaを使用するSelenium - ドライバの実行ファイルのパスは、webdriver.gecko.driverシステムプロパティで設定する必要があります。
-
[解決済み] 複数のJava例外を同じcatch節でキャッチすることはできますか?
-
[解決済み] BashでTRY CATCHコマンドはありますか?
-
[解決済み] 警告をtry/catchすることはできますか?
-
[解決済み】try catchでのThrowableとExceptionの使い分けについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Android Studio クラス org.codehaus.groovy.runtime.InvokerHelper を初期化できませんでした。
-
[解決済み】"比較メソッドはその一般契約に違反する!"
-
[解決済み] 二項演算子「&」のオペランド型がおかしい java
-
[解決済み】Java JDK - doubleからintへの非可逆変換の可能性
-
[解決済み] hibernate のプロパティが見つかりません。
-
[解決済み】Eclipseがエラーメッセージ "Java was started but returned exit code = 1" を返す
-
[解決済み】java.io.IOException: 壊れたパイプ
-
[解決済み] [Solved] java.lang.NoClassDefFoundError: クラスXXXを初期化できませんでした。
-
[解決済み】接続Java - MySQL : 公開鍵の取得は許可されていません。
-
[解決済み】フォルダに書き込もうとすると「java.nio.file.AccessDeniedException」が発生する件