Catch Internal Error (#2520)

* Catch Internal Error

* Fix

* Fix I18N
This commit is contained in:
Burning_TNT 2023-11-09 21:23:10 +08:00 committed by GitHub
parent f84be1e109
commit df9499b723
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 25 additions and 14 deletions

View File

@ -29,6 +29,10 @@ public class CrashReport {
nonFatal = false;
}
public Throwable getThrowable() {
return this.throwable;
}
public CrashReport setNonFatal() {
nonFatal = true;
return this;
@ -38,6 +42,9 @@ public class CrashReport {
if (!stackTrace.contains("org.jackhuang"))
return false;
if (throwable instanceof VirtualMachineError)
return false;
return true;
}

View File

@ -27,6 +27,7 @@ import javafx.scene.layout.HBox;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import org.jackhuang.hmcl.Metadata;
import org.jackhuang.hmcl.countly.CrashReport;
import org.jackhuang.hmcl.upgrade.UpdateChecker;
import static org.jackhuang.hmcl.ui.FXUtils.newImage;
@ -37,16 +38,18 @@ import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
*/
public class CrashWindow extends Stage {
public CrashWindow(String text) {
public CrashWindow(CrashReport report) {
Label lblCrash = new Label();
if (UpdateChecker.isOutdated())
lblCrash.setText(i18n("launcher.crash_out_dated"));
if (report.getThrowable() instanceof InternalError)
lblCrash.setText(i18n("launcher.crash.java_internal_error"));
else if (UpdateChecker.isOutdated())
lblCrash.setText(i18n("launcher.crash.hmcl_out_dated"));
else
lblCrash.setText(i18n("launcher.crash"));
lblCrash.setWrapText(true);
TextArea textArea = new TextArea();
textArea.setText(text);
textArea.setText(report.getDisplayText());
textArea.setEditable(false);
Button btnContact = new Button();

View File

@ -97,13 +97,11 @@ public class CrashReporter implements Thread.UncaughtExceptionHandler {
if (!report.shouldBeReport())
return;
String text = report.getDisplayText();
LOG.log(Level.SEVERE, text);
LOG.log(Level.SEVERE, report.getDisplayText());
Platform.runLater(() -> {
if (checkThrowable(e)) {
if (showCrashWindow) {
new CrashWindow(text).show();
new CrashWindow(report).show();
}
if (!UpdateChecker.isOutdated() && IntegrityChecker.isSelfVerified()) {
reportToServer(report);

View File

@ -710,7 +710,8 @@ launcher.cache_directory.disabled=Disabled
launcher.cache_directory.invalid=Unable to create cache directory, falling back to default.
launcher.contact=Contact Us
launcher.crash=Hello Minecraft! Launcher has encountered a fatal error\! Please copy the following log and ask for help on our Discord community, GitHub or Minecraft Forum.
launcher.crash_out_dated=Hello Minecraft! Launcher has encountered a fatal error\! Your launcher is outdated. Please update your launcher\!
launcher.crash.java_internal_error=Hello Minecraft! Launcher has encountered a fatal error because your Java is broken. Please uninstall your Java, and download a suitable Java <a href="https://bell-sw.com/pages/downloads/#downloads">here</a>.
launcher.crash.hmcl_out_dated=Hello Minecraft! Launcher has encountered a fatal error\! Your launcher is outdated. Please update your launcher\!
launcher.update_java=Please update your Java version.
login.empty_username=You have not set your username yet\!

View File

@ -659,7 +659,7 @@ launcher.cache_directory.disabled=Desactivado
launcher.cache_directory.invalid=No se ha podido crear el directorio de la caché, volviendo a los valores por defecto.
launcher.contact=Contacta con nosotros
launcher.crash=¡Hello Minecraft! Launcher ha encontrado un error fatal. Por favor, copie el siguiente registro y pida ayuda en nuestra comunidad en Discord, GitHub o Minecraft Forums.
launcher.crash_out_dated=¡Hello Minecraft! Launcher ha encontrado un error fatal. Su launcher está desactualizado. Por favor, ¡actualícelo!.
launcher.crash.hmcl_out_dated=¡Hello Minecraft! Launcher ha encontrado un error fatal. Su launcher está desactualizado. Por favor, ¡actualícelo!.
launcher.update_java=Por favor, actualice su versión de Java.
login.empty_username=¡Todavía no has puesto tu nombre de usuario!

View File

@ -505,7 +505,7 @@ launcher.cache_directory.disabled=無効(常にゲームパスを使用する)
launcher.cache_directory.invalid=無効なディレクトリ。デフォルト設定の復元。
launcher.contact=お問い合わせ
launcher.crash=Hello Minecraftランチャーがクラッシュしました次のコンテンツをコピーして、MCBBS、Baidu Tieba、GitHub、またはMinecraftForumを介してフィードバックを送信してください。
launcher.crash_out_dated=Hello Minecraftランチャーがクラッシュしましたランチャーが古くなっています。ランチャーを更新してください
launcher.crash.hmcl_out_dated=Hello Minecraftランチャーがクラッシュしましたランチャーが古くなっています。ランチャーを更新してください
launcher.update_java=Javaを更新してください。
login.empty_username=ユーザー名を設定していません!

View File

@ -510,7 +510,7 @@ launcher.cache_directory.disabled=Отключено
launcher.cache_directory.invalid=Недопустимый каталог. Восстановление настроек по умолчанию.
launcher.contact=Свяжитесь с нами
launcher.crash=Лаунчер Hello Minecraft! рухнул! Скопируйте следующее содержимое и отправьте отзыв через MCBBS, Baidu Tieba, GitHub или Minecraft Forum.
launcher.crash_out_dated=Лаунчер Hello Minecraft! рухнул! Ваш лаунчер устарел, обновите его!
launcher.crash.hmcl_out_dated=Лаунчер Hello Minecraft! рухнул! Ваш лаунчер устарел, обновите его!
launcher.update_java=Обновите свой Java.
login.empty_username=Вы не задали имя пользователя!

View File

@ -582,7 +582,8 @@ launcher.cache_directory.disabled=停用
launcher.cache_directory.invalid=無法建立自訂的快取目錄,還原至預設設定
launcher.contact=聯絡我們
launcher.crash=Hello Minecraft! Launcher 遇到了無法處理的錯誤,請複製下列內容並透過 MCBBS、貼吧、GitHub 或 Minecraft Forum 回報 bug。
launcher.crash_out_dated=Hello Minecraft! Launcher 遇到了無法處理的錯誤,已偵測到您的啟動器不是最新版本,請更新後重試!
launcher.crash.java_internal_error=HHello Minecraft! Launcher 由於當前 Java 損壞而無法繼續運行,請卸載當前 Java點擊 <a href="https://bell-sw.com/pages/downloads/#downloads">此處</a> 安裝合適的 Java 版本。
launcher.crash.hmcl_out_dated=Hello Minecraft! Launcher 遇到了無法處理的錯誤,已偵測到您的啟動器不是最新版本,請更新後重試!
launcher.update_java=請更新您的 Java
login.empty_username=你還未設定使用者名稱!

View File

@ -581,7 +581,8 @@ launcher.cache_directory.disabled=禁用(总是使用游戏路径)
launcher.cache_directory.invalid=无法创建自定义的缓存目录,恢复默认设置
launcher.contact=联系我们
launcher.crash=Hello Minecraft! Launcher 遇到了无法处理的错误,请复制下列内容并点击右下角的按钮反馈 bug。
launcher.crash_out_dated=Hello Minecraft! Launcher 遇到了无法处理的错误,已检测到您的启动器不是最新版本,请更新后再试。
launcher.crash.java_internal_error=Hello Minecraft! Launcher 由于当前 Java 损坏而无法继续运行,请卸载当前 Java点击 <a href="https://bell-sw.com/pages/downloads/#downloads">此处</a> 安装合适的 Java 版本。
launcher.crash.hmcl_out_dated=Hello Minecraft! Launcher 遇到了无法处理的错误,已检测到您的启动器不是最新版本,请更新后再试。
launcher.update_java=请更新您的 Java \n你可以访问\n https://docs.hmcl.net/help.html \n页面寻求帮助。
login.empty_username=你还未设置用户名!