diff options
| author | sowgro <tpoke.ferrari@gmail.com> | 2024-08-30 12:23:26 -0400 | 
|---|---|---|
| committer | sowgro <tpoke.ferrari@gmail.com> | 2024-08-30 12:23:26 -0400 | 
| commit | 69f69143f5604626ded3c26ee754b94eaf3c4f15 (patch) | |
| tree | a64a1ce20ff21cd6d73b1d36c3e3f9ca930c9b4d /src/main | |
| parent | aa916b0f06be0d42bec1e035d0efeec954e09243 (diff) | |
| download | NPEhero-69f69143f5604626ded3c26ee754b94eaf3c4f15.tar.gz NPEhero-69f69143f5604626ded3c26ee754b94eaf3c4f15.tar.bz2 NPEhero-69f69143f5604626ded3c26ee754b94eaf3c4f15.zip | |
Clean up error handling pt.1
Diffstat (limited to 'src/main')
13 files changed, 85 insertions, 49 deletions
| diff --git a/src/main/java/net/sowgro/npehero/Driver.java b/src/main/java/net/sowgro/npehero/Driver.java index 5a2aa73..411bf87 100755 --- a/src/main/java/net/sowgro/npehero/Driver.java +++ b/src/main/java/net/sowgro/npehero/Driver.java @@ -12,7 +12,7 @@ import javafx.scene.input.KeyEvent;  import javafx.scene.layout.*;  import javafx.stage.Stage;  import javafx.util.Duration; -import net.sowgro.npehero.editor.ErrorDisplay; +import net.sowgro.npehero.main.ErrorDisplay;  import net.sowgro.npehero.levelapi.Levels;  import net.sowgro.npehero.main.*;  import net.sowgro.npehero.gui.MainMenu; @@ -86,7 +86,6 @@ public class Driver extends Application              Settings.read();              System.out.println("Settings loaded");          } catch (Exception e) { -            e.printStackTrace();              errors.push("Failed to load settings from file\n"+e);          }          System.out.println("Loading controls..."); @@ -94,7 +93,6 @@ public class Driver extends Application              Control.readFromFile();              System.out.println("Controls loaded");          } catch (Exception e) { -            e.printStackTrace();              errors.push("Failed to load controls from file\n"+e);          }          System.out.println("Loading levels..."); @@ -102,7 +100,6 @@ public class Driver extends Application              Levels.readData();              System.out.println("Loaded " + Levels.list.size() + " levels (" + Levels.getValidList().size() + " valid)");          } catch (IOException e) { -            e.printStackTrace();              errors.push("Failed to load levels\n");          }          Page last = new MainMenu(); diff --git a/src/main/java/net/sowgro/npehero/editor/DiffEditor.java b/src/main/java/net/sowgro/npehero/editor/DiffEditor.java index 77e5fa9..6485a4d 100755 --- a/src/main/java/net/sowgro/npehero/editor/DiffEditor.java +++ b/src/main/java/net/sowgro/npehero/editor/DiffEditor.java @@ -72,7 +72,6 @@ public class DiffEditor extends Page              try {                  diff.leaderboard.save();              } catch (IOException e) { -                e.printStackTrace();                  Driver.setMenu(new ErrorDisplay("Failed to clear the leaderboard:\n"+e, this));              }          }); @@ -97,7 +96,6 @@ public class DiffEditor extends Page              try {                  diff.writeMetadata();              } catch (IOException e) { -                e.printStackTrace();                  //TODO                  throw new RuntimeException(e);              } diff --git a/src/main/java/net/sowgro/npehero/editor/DiffList.java b/src/main/java/net/sowgro/npehero/editor/DiffList.java index e435b22..7106609 100755 --- a/src/main/java/net/sowgro/npehero/editor/DiffList.java +++ b/src/main/java/net/sowgro/npehero/editor/DiffList.java @@ -11,6 +11,8 @@ import javafx.scene.layout.VBox;  import net.sowgro.npehero.Driver;  import net.sowgro.npehero.levelapi.Difficulty;  import net.sowgro.npehero.levelapi.Level; +import net.sowgro.npehero.main.ErrorDisplay; +import net.sowgro.npehero.main.ErrorList;  import net.sowgro.npehero.main.Page;  import net.sowgro.npehero.main.Sound; @@ -84,8 +86,7 @@ public class DiffList extends Page              try {                  level.difficulties.remove(diffs.getSelectionModel().getSelectedItem());              } catch (IOException ex) { -                ex.printStackTrace(); -                Driver.setMenu(new ErrorDisplay("Failed to remove difficulty\n"+e, this)); +                Driver.setMenu(new ErrorDisplay("Failed to remove difficulty", ex, this));              }          });          remove.setDisable(true); @@ -120,8 +121,7 @@ public class DiffList extends Page              try {                  level.difficulties.saveOrder();              } catch (IOException e) { -                e.printStackTrace(); -                Driver.setMenu(new ErrorDisplay("Failed to move difficulty\n"+e,this)); +                Driver.setMenu(new ErrorDisplay("Failed to move difficulty", e,this));              }          }); @@ -139,8 +139,7 @@ public class DiffList extends Page              try {                  level.difficulties.saveOrder();              } catch (IOException e) { -                e.printStackTrace(); -                Driver.setMenu(new ErrorDisplay("Failed to move difficulty\n"+e,this)); +                Driver.setMenu(new ErrorDisplay("Failed to move difficulty", e,this));              }          }); @@ -168,7 +167,7 @@ public class DiffList extends Page                  } catch (FileAlreadyExistsException e) {                      Driver.setMenu(new ErrorDisplay("Failed to add difficulty\nA difficulty already exists with the folder name " + e.getFile(), this));                  } catch (IOException e) { -                    Driver.setMenu(new ErrorDisplay("Failed to add difficulty\n" + e, this)); +                    Driver.setMenu(new ErrorDisplay("Failed to add difficulty", e, this));                  }              };              Driver.setMenu(new FolderNameEntry("difficulty", this, next)); diff --git a/src/main/java/net/sowgro/npehero/editor/LevelEditor.java b/src/main/java/net/sowgro/npehero/editor/LevelEditor.java index e02da0f..8e49180 100755 --- a/src/main/java/net/sowgro/npehero/editor/LevelEditor.java +++ b/src/main/java/net/sowgro/npehero/editor/LevelEditor.java @@ -152,13 +152,11 @@ public class LevelEditor extends Page                  }              } catch (Exception ex) {                  // TODO -                ex.printStackTrace();              }              try {                  level.writeMetadata();              } catch (IOException ex) {                  // TODO -                ex.printStackTrace();              }              validate();          }); diff --git a/src/main/java/net/sowgro/npehero/editor/LevelList.java b/src/main/java/net/sowgro/npehero/editor/LevelList.java index 6bd725f..492683f 100755 --- a/src/main/java/net/sowgro/npehero/editor/LevelList.java +++ b/src/main/java/net/sowgro/npehero/editor/LevelList.java @@ -6,7 +6,6 @@ import javafx.geometry.Pos;  import javafx.scene.control.*;  import javafx.scene.control.Button;  import javafx.scene.control.Label; -import javafx.scene.control.TextField;  import javafx.scene.layout.Pane;  import net.sowgro.npehero.Driver;  import javafx.scene.layout.HBox; @@ -14,6 +13,8 @@ import javafx.scene.layout.VBox;  import net.sowgro.npehero.gui.MainMenu;  import net.sowgro.npehero.levelapi.Level;  import net.sowgro.npehero.levelapi.Levels; +import net.sowgro.npehero.main.ErrorDisplay; +import net.sowgro.npehero.main.ErrorList;  import net.sowgro.npehero.main.Page;  import net.sowgro.npehero.main.Sound; @@ -97,8 +98,7 @@ public class LevelList extends Page              try {                  Levels.remove(levels.getSelectionModel().getSelectedItem());              } catch (IOException ex) { -                Driver.setMenu(new ErrorDisplay("Failed to remove this level\n"+e.toString(), this)); -                ex.printStackTrace(); +                Driver.setMenu(new ErrorDisplay("Failed to remove this level", ex, this));              }          });          remove.setDisable(true); @@ -110,8 +110,7 @@ public class LevelList extends Page              try {                  Levels.readData();              } catch (IOException ex) { -                Driver.setMenu(new ErrorDisplay("Failed to load levels: Level folder is missing\n"+e.toString(), this)); -                ex.printStackTrace(); +                Driver.setMenu(new ErrorDisplay("Failed to load levels: Level folder is missing", ex, this));              }              levels.setItems(Levels.list);          }); @@ -124,7 +123,7 @@ public class LevelList extends Page              try {                  Desktop.getDesktop().open(Levels.dir);              } catch (IOException ex) { -                Driver.setMenu(new ErrorDisplay("Failed to open folder\n"+ex, this)); +                Driver.setMenu(new ErrorDisplay("Failed to open folder", ex, this));              }          }).start()); @@ -163,7 +162,7 @@ public class LevelList extends Page                  } catch (FileAlreadyExistsException e) {                      Driver.setMenu(new ErrorDisplay("Failed to add level\nA level already exists with the folder name '" + e.getFile() + "'", this));                  } catch (IOException e) { -                    Driver.setMenu(new ErrorDisplay("Failed to create level\n"+e, this)); +                    Driver.setMenu(new ErrorDisplay("Failed to create level", e, this));                  }              };              Driver.setMenu(new FolderNameEntry("level", this, next)); diff --git a/src/main/java/net/sowgro/npehero/gameplay/SongPlayer.java b/src/main/java/net/sowgro/npehero/gameplay/SongPlayer.java index 33f9a51..e51faa9 100755 --- a/src/main/java/net/sowgro/npehero/gameplay/SongPlayer.java +++ b/src/main/java/net/sowgro/npehero/gameplay/SongPlayer.java @@ -125,7 +125,6 @@ public class SongPlayer extends Pane {  		try {  			loadSong();			//Calls the file loading from the song's notes.txt file  		} catch (FileNotFoundException e) { -			e.printStackTrace();  		}  		dButton.setColor(lvl.colors[0]);	//sets the color of the five buttons to be diff --git a/src/main/java/net/sowgro/npehero/gui/ControlEditor.java b/src/main/java/net/sowgro/npehero/gui/ControlEditor.java index 8e4d1d5..8298aa5 100644 --- a/src/main/java/net/sowgro/npehero/gui/ControlEditor.java +++ b/src/main/java/net/sowgro/npehero/gui/ControlEditor.java @@ -8,7 +8,7 @@ import javafx.scene.input.KeyCode;  import javafx.scene.input.KeyEvent;  import javafx.scene.layout.*;  import net.sowgro.npehero.Driver; -import net.sowgro.npehero.editor.ErrorDisplay; +import net.sowgro.npehero.main.ErrorDisplay;  import net.sowgro.npehero.main.Control;  import net.sowgro.npehero.main.Page;  import net.sowgro.npehero.main.Sound; @@ -78,8 +78,7 @@ public class ControlEditor extends Page {                      try {                          Control.writeToFile();                      } catch (IOException e) { -                        Driver.setMenu(new ErrorDisplay("An error occured while saving your controls\n"+e, this)); -                        e.printStackTrace(); +                        Driver.setMenu(new ErrorDisplay("An error occurred while saving your controls", e, this));                      }                  });                  controlButton.setOnAction(_ -> { diff --git a/src/main/java/net/sowgro/npehero/gui/GameOver.java b/src/main/java/net/sowgro/npehero/gui/GameOver.java index b66d0c6..0ae3daf 100755 --- a/src/main/java/net/sowgro/npehero/gui/GameOver.java +++ b/src/main/java/net/sowgro/npehero/gui/GameOver.java @@ -10,7 +10,7 @@ import javafx.scene.layout.Pane;  import javafx.scene.layout.VBox;  import javafx.scene.text.Text;  import net.sowgro.npehero.Driver; -import net.sowgro.npehero.editor.ErrorDisplay; +import net.sowgro.npehero.main.ErrorDisplay;  import net.sowgro.npehero.levelapi.Difficulty;  import net.sowgro.npehero.levelapi.Level;  import net.sowgro.npehero.main.Page; @@ -73,8 +73,7 @@ public class GameOver extends Page              try {                  diff.leaderboard.add(name.getText(), score2);              } catch (IOException e) { -                e.printStackTrace(); -                Driver.setMenu(new ErrorDisplay("Failed to save score to leaderboard:\n"+e, this)); +                Driver.setMenu(new ErrorDisplay("Failed to save score to leaderboard", e, this));              }          }); diff --git a/src/main/java/net/sowgro/npehero/gui/SettingsEditor.java b/src/main/java/net/sowgro/npehero/gui/SettingsEditor.java index efd136a..f83a8a4 100755 --- a/src/main/java/net/sowgro/npehero/gui/SettingsEditor.java +++ b/src/main/java/net/sowgro/npehero/gui/SettingsEditor.java @@ -11,7 +11,7 @@ import javafx.scene.layout.Pane;  import javafx.scene.layout.VBox;  import javafx.scene.text.Text;  import net.sowgro.npehero.Driver; -import net.sowgro.npehero.editor.ErrorDisplay; +import net.sowgro.npehero.main.ErrorDisplay;  import net.sowgro.npehero.main.Page;  import net.sowgro.npehero.main.Settings;  import net.sowgro.npehero.main.Sound; @@ -95,8 +95,7 @@ public class SettingsEditor extends Page              try {                  Settings.save();              } catch (IOException ex) { -                ex.printStackTrace(); -                Driver.setMenu(new ErrorDisplay("Failed to save settings"+ex, this)); +                Driver.setMenu(new ErrorDisplay("Failed to save settings", ex, this));              }              Sound.playSfx(Sound.BACKWARD);              Driver.setMenu(new MainMenu()); diff --git a/src/main/java/net/sowgro/npehero/levelapi/Difficulties.java b/src/main/java/net/sowgro/npehero/levelapi/Difficulties.java index cfb3673..d5483a8 100644 --- a/src/main/java/net/sowgro/npehero/levelapi/Difficulties.java +++ b/src/main/java/net/sowgro/npehero/levelapi/Difficulties.java @@ -51,8 +51,7 @@ public class Difficulties {                      Difficulty diff = new Difficulty(cur, level);                      list.add(diff);                  } catch (IOException e) { -                    problems.put(cur.getName(), e); -                    e.printStackTrace(); +                    problems.put("Failed to load difficulty in folder '" + cur.getName() + "'", e);                  }              }          } diff --git a/src/main/java/net/sowgro/npehero/levelapi/Levels.java b/src/main/java/net/sowgro/npehero/levelapi/Levels.java index 37878d8..84d169c 100755 --- a/src/main/java/net/sowgro/npehero/levelapi/Levels.java +++ b/src/main/java/net/sowgro/npehero/levelapi/Levels.java @@ -40,8 +40,7 @@ public class Levels {                  Level level = new Level(file);                  list.add(level);              } catch (Exception e) { -                problems.put(file.getName(), e); -                e.printStackTrace(); +                problems.put("Failed to load load level in folder '" + file.getName() + "'", e);              }          }          list.sort(Comparator.naturalOrder()); diff --git a/src/main/java/net/sowgro/npehero/editor/ErrorDisplay.java b/src/main/java/net/sowgro/npehero/main/ErrorDisplay.java index c07d12f..cd43937 100644 --- a/src/main/java/net/sowgro/npehero/editor/ErrorDisplay.java +++ b/src/main/java/net/sowgro/npehero/main/ErrorDisplay.java @@ -1,4 +1,4 @@ -package net.sowgro.npehero.editor; +package net.sowgro.npehero.main;  import javafx.geometry.Insets;  import javafx.geometry.Pos; @@ -8,8 +8,9 @@ import javafx.scene.layout.HBox;  import javafx.scene.layout.Pane;  import javafx.scene.layout.VBox;  import net.sowgro.npehero.Driver; -import net.sowgro.npehero.main.Page; -import net.sowgro.npehero.main.Sound; + +import java.io.PrintWriter; +import java.io.StringWriter;  public class ErrorDisplay extends Page { @@ -43,6 +44,64 @@ public class ErrorDisplay extends Page {      }      /** +     * Error display with a message, exception and Back button +     * @param message The message to display +     * @param e The exception that occurred +     * @param prev The destination of the close button +     */ +    public ErrorDisplay(String message, Exception e, Page prev) { +        Label title = new Label(message); +        title.setPadding(new Insets(10)); +        title.setWrapText(true); + +        Label exView = new Label(e.toString()); +        exView.getStyleClass().add("red"); + +        StringWriter sw = new StringWriter(); +        PrintWriter pw = new PrintWriter(sw); +        e.printStackTrace(pw); +        String sStackTrace = sw.toString(); // stack trace as a string + +        Label stackTrace = new Label(sStackTrace); +        stackTrace.getStyleClass().add("red"); +        stackTrace.setVisible(false); +        stackTrace.setManaged(false); + +        Button exit = new Button(); +        exit.setText("Ok"); +        exit.setOnAction(_ -> { +            Sound.playSfx(Sound.BACKWARD); +            Driver.setMenu(prev); +        }); + +        Button printStack = new Button("Print to console"); +        printStack.setOnAction(_ -> { +            Sound.playSfx(Sound.FORWARD); +            e.printStackTrace(); +        }); + +        Button showStack = new Button("Show Stack Trace"); +        showStack.setOnAction(_ -> { +            stackTrace.setVisible(true); +            stackTrace.setManaged(true); +        }); + +        HBox buttonBox = new HBox(exit, showStack); +        buttonBox.setSpacing(10); + +        VBox main = new VBox(title, exView); +        main.getStyleClass().add("box"); + +        VBox centerBox = new VBox(); +        centerBox.getChildren().addAll(main, buttonBox, stackTrace); +        centerBox.setSpacing(10); +        centerBox.setAlignment(Pos.CENTER); + +        content.getChildren().add(centerBox); +        content.setAlignment(Pos.CENTER); +    } + +    /**       * Error display with a message and Cancel and Proceed buttons       * @param message The message to display       * @param prev The destination of the Cancel button diff --git a/src/main/java/net/sowgro/npehero/editor/ErrorList.java b/src/main/java/net/sowgro/npehero/main/ErrorList.java index 92a9455..a875502 100644 --- a/src/main/java/net/sowgro/npehero/editor/ErrorList.java +++ b/src/main/java/net/sowgro/npehero/main/ErrorList.java @@ -1,19 +1,11 @@ -package net.sowgro.npehero.editor; +package net.sowgro.npehero.main; -import javafx.event.EventHandler;  import javafx.geometry.Insets;  import javafx.geometry.Pos;  import javafx.scene.control.*; -import javafx.scene.input.KeyEvent;  import javafx.scene.layout.*;  import net.sowgro.npehero.Driver; -import net.sowgro.npehero.gui.SettingsEditor; -import net.sowgro.npehero.main.Control; -import net.sowgro.npehero.main.Page; -import net.sowgro.npehero.main.Sound; -import java.io.IOException; -import java.util.List;  import java.util.Map;  public class ErrorList extends Page { @@ -57,7 +49,7 @@ public class ErrorList extends Page {              // reset button              Button resetButton = new Button("View Error"); -            resetButton.setOnAction(_ -> Driver.setMenu(new ErrorDisplay("E: \n"+error.getValue(), this))); +            resetButton.setOnAction(_ -> Driver.setMenu(new ErrorDisplay(error.getKey(), error.getValue(), this)));              controls.add(resetButton, 1, i);              i++;          } | 
