繁体   English   中英

如何修复“System.Reflection.TargetInvocationException已被抛出”

[英]How to fix “System.Reflection.TargetInvocationException has been thrown”

我正在按照制作discord bot的教程,在遵循设置机器人的基础知识之后,我一直遇到这个异常:

抛出了System.Reflection.TargetInvocationException。 调用的目标抛出了异常。

这是我的代码:

using Discord.Commands;
using Discord;
using System;
namespace TestBot
{
    public class MyBot
    {
        DiscordClient discord;

        public MyBot()
        {
            discord = new DiscordClient(x =>
            {
                x.LogLevel = LogSeverity.Info;
                x.LogHandler = Log;
            });
            discord.UsingCommands(x =>
            {
                x.PrefixChar = '!';
                x.AllowMentionPrefix = true;
            });
            var commands = discord.GetService<CommandService>();

            commands.CreateCommand("test")
                    .Do(async (e) =>
            {
                await e.Channel.SendMessage("response");
            });
             discord.ExecuteAndWait(async () =>
            {
                await discord.Connect("BOT_TOKEN", TokenType.Bot);
            });

        }

        private void Log(object sender, LogMessageEventArgs e)
        {
            Console.WriteLine(e.Message);
        }
    }
}

MonoDevelop表示这段代码发生异常:

discord.ExecuteAndWait(async () =>
            {
                await discord.Connect("BOT_TOKEN", TokenType.Bot);
            });

我不知道如何解决这个问题,所以任何帮助都会非常感激。

(由于这是我在这里发表的第一篇文章,对于如何改进我的帖子的任何建议也表示赞赏。)

您的异常的真正原因是对您隐藏。 要解决此问题,您需要查看内部异常(如果需要,还需要查看该异常的内部异常等等)。 这将允许您查看问题的根本原因,并允许您锻炼如何解决它。

当代码在调试模式中断时,您可以查看内部异常;

在此输入图像描述

单击查看详细信息将允许您查看有关例外的更多信息;

在此输入图像描述

一旦你找到了你的异常的真正原因,我建议你发一个新问题,询问如何解决这个特定问题(如果你自己无法解决)。

在我的情况下,它是由一些内部代码中的一些异常引起的,并且异常是通过堆栈抛出的,当到达表面并显示异常窗口时,异常消息已被丢失,因此它显示无用的消息System.Reflection.TargetInvocationException has been thrown.

解决方案是打开异常设置窗口,并检查所有项目,以便在发生任何类型的异常时它会中断,因此您可以在最初的位置捕获异常,以便可以理解错误原因。

在此输入图像描述

我的想法来自HERE

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM