diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/game/LibraryDownloadException.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/game/LibraryDownloadException.java index 086402830..10af82acb 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/game/LibraryDownloadException.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/game/LibraryDownloadException.java @@ -18,11 +18,12 @@ package org.jackhuang.hmcl.download.game; import org.jackhuang.hmcl.game.Library; +import org.jetbrains.annotations.NotNull; public class LibraryDownloadException extends Exception { private final Library library; - public LibraryDownloadException(Library library, Throwable cause) { + public LibraryDownloadException(Library library, @NotNull Throwable cause) { super("Unable to download library " + library, cause); this.library = library; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/game/LibraryDownloadTask.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/game/LibraryDownloadTask.java index 106fbc367..3d308940c 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/game/LibraryDownloadTask.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/game/LibraryDownloadTask.java @@ -37,6 +37,7 @@ import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.util.*; +import java.util.concurrent.CancellationException; import java.util.jar.*; import java.util.logging.Level; @@ -95,6 +96,8 @@ public class LibraryDownloadTask extends Task { Exception t = task.getException(); if (t instanceof DownloadException) throw new LibraryDownloadException(library, t.getCause()); + else if (t == null) + throw new CancellationException(); else throw new LibraryDownloadException(library, t); } else { diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/DownloadException.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/DownloadException.java index e6411410b..55d7b1cc7 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/DownloadException.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/DownloadException.java @@ -17,6 +17,8 @@ */ package org.jackhuang.hmcl.task; +import org.jetbrains.annotations.NotNull; + import java.io.IOException; import java.net.URL; @@ -26,7 +28,7 @@ public class DownloadException extends IOException { private final URL url; - public DownloadException(URL url, Throwable cause) { + public DownloadException(URL url, @NotNull Throwable cause) { super("Unable to download " + url + ", " + cause.getMessage(), requireNonNull(cause)); this.url = url; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/Task.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/Task.java index 44782c7b8..f2441025a 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/Task.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/Task.java @@ -31,6 +31,7 @@ import org.jackhuang.hmcl.util.function.ExceptionalConsumer; import org.jackhuang.hmcl.util.function.ExceptionalFunction; import org.jackhuang.hmcl.util.function.ExceptionalRunnable; import org.jackhuang.hmcl.util.function.ExceptionalSupplier; +import org.jetbrains.annotations.Nullable; import java.util.*; import java.util.concurrent.Callable; @@ -131,6 +132,7 @@ public abstract class Task { * * @return the exception thrown during execution, possibly from dependents or dependencies. */ + @Nullable public final Exception getException() { return exception; }