Итак, у меня есть программа, которую я хочу проверить, если набор шнуров находится внутри игрового поля, а если нет, то чтобы выбросить ошибку, но продолжайте с программой. Вот код используется (я не беспокоюсь об именах классов/пакетов):Бросьте исключение и НЕ завершайте программу в java
package routines;
import java.util.Random;
import game.GameBoard;
import game.Player;
public class MovePlayer extends Routine {
final protected int destX;
final protected int destY;
public MovePlayer(int destX, int destY, GameBoard board) {
super();
if(destY > board.getHeight() || destX > board.getWidth()) {
fail();
throw new RuntimeException(">>> Error while creating routine, one or more coords are outside of the game board");
} else {
this.destX = destX;
this.destY = destY;
}
}
А вот ссылка на супер класс (много кода, не уверен, если я должен поставить все это в здесь) Super class SRC
EDIT: Не уверен, что если это будет исправить то, что я хотел, но все, что я делал, было удалить final
ключевое слово из переменных
EDIT # 2: Так что я, наконец поняли, что я делал неправильно. 1) переменные были отмечены как окончательные. 2) Это был мой другой код, который вызывал это. * facepalm * Весь мой код был перенесен в новый репозиторий Git, поэтому, если вам следует это сделать, вы можете посмотреть, что я здесь сделал: VI-Arena Git repository
Пожалуйста, проверьте, как использовать [ 'try' блок] (https://docs.oracle.com/javase/tutorial/essential/exceptions/try.html). –
Исключение будет выбрано и должно быть уловлено классом, пытавшимся создать объект MovePlayer. В этом классе вы должны использовать блок «try ... catch», как упомянуто Luiggi – Barranka
Исключения - ваш друг. Вы можете использовать их, чтобы избежать блока кода, в котором вы находитесь, чтобы поднять стек до места, где вы можете его обработать. В таких случаях, как ваш пример здесь, я рекомендую вам создать пользовательский тип исключения, поэтому вы не пойдете на исключения, которые вы не имели в виду. – ControlAltDel