diff --git a/mirai-core/src/commonMain/kotlin/MiraiImpl.kt b/mirai-core/src/commonMain/kotlin/MiraiImpl.kt
index a225f5be4..9ee4957e6 100644
--- a/mirai-core/src/commonMain/kotlin/MiraiImpl.kt
+++ b/mirai-core/src/commonMain/kotlin/MiraiImpl.kt
@@ -885,13 +885,21 @@ internal open class MiraiImpl : IMirai, LowLevelApiAccessor {
     )
 
     override suspend fun downloadLongMessage(bot: Bot, resourceId: String): MessageChain {
-        return downloadMultiMsgTransmit(bot, resourceId, ResourceKind.LONG_MESSAGE).msg
-            .toMessageChainNoSource(bot, 0, MessageSourceKind.GROUP)
-            .refineDeep(bot)
+        try {
+            return downloadMultiMsgTransmit(bot, resourceId, ResourceKind.LONG_MESSAGE).msg
+                .toMessageChainNoSource(bot, 0, MessageSourceKind.GROUP)
+                .refineDeep(bot)
+        } catch (error: Throwable) {
+            throw IllegalStateException("Failed to download long message `$resourceId`", error)
+        }
     }
 
     override suspend fun downloadForwardMessage(bot: Bot, resourceId: String): List<ForwardMessage.Node> {
-        return downloadMultiMsgTransmit(bot, resourceId, ResourceKind.FORWARD_MESSAGE).toForwardMessageNodes(bot)
+        try {
+            return downloadMultiMsgTransmit(bot, resourceId, ResourceKind.FORWARD_MESSAGE).toForwardMessageNodes(bot)
+        } catch (error: Throwable) {
+            throw IllegalStateException("Failed to download forward message `$resourceId`", error)
+        }
     }
 
     internal open suspend fun MsgTransmit.PbMultiMsgNew.toForwardMessageNodes(