Try...Catch...Invoke异常捕捉无效?

Kation 2012-11-04 12:23:33

try
{
result = method.Invoke(instance, args);
}
catch (ArgumentException)
{
data = MessageFormatter.FromChannelMethodResult(null, "MethodParametersError");
Server.SendAsync(e.Client, data, e.Head);
return;
}
catch (Exception)
{
data = MessageFormatter.FromChannelMethodResult(null, "MethodRuntimeError");
Server.SendAsync(e.Client, data, e.Head);
return;
}

这个method里出现异常,为什么catch不到
...全文
484 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hauk 2012-11-05
  • 打赏
  • 举报
回复
        public static void testInvok()
        {
            Console.WriteLine("testInvok");
            string str = "aaa";
            int i = Convert.ToInt32(str);
        }

        public static void Main(string[] args)
        {
            try
            {
                typeof(Program).GetMethod("testInvok").Invoke(null, null);
            }
            catch (Exception)
            {
                Console.WriteLine("Exception");
            }
        }

       //输出:
       //testInvok
       //Exception
可以看出来能够捕捉的,是不是你在函数里面处理了异常呢?
phommy 2012-11-05
  • 打赏
  • 举报
回复
vs可以设置是遇到异常中止还是只有遇到“未捕获”异常才中止。如果你定义了前者,程序会停在某些实际运行时无错的异常处。 修改快键是ctrl+alt+e
Kation 2012-11-05
  • 打赏
  • 举报
回复
引用 12 楼 haukwong 的回复:
引用 11 楼 ZIP_xG 的回复:引用 10 楼 sbwwkmyd 的回复:引用 9 楼 ZIP_xG 的回复:为何我的不能。。。 这个正常跑的时候应该没问题,VS调试的时候应该仅仅是告诉你有这回事。 我擦。。。我还的确没有正式运行过。。。 为何这个代码VS调试的时候不会捕捉呢。。。 难道我让我不能调试下去?。。。 调试的时候都是这样的。
不对啊。。。调试其它代码的时候try也能捕捉啊,能正常运行下去。。。 现在我这样不能运行下去了,我想要调试的时候也运行下去。。。
dengjinjuan 2012-11-05
  • 打赏
  • 举报
回复
catch (Exception e)
Hauk 2012-11-05
  • 打赏
  • 举报
回复
引用 11 楼 ZIP_xG 的回复:
引用 10 楼 sbwwkmyd 的回复:引用 9 楼 ZIP_xG 的回复:为何我的不能。。。 这个正常跑的时候应该没问题,VS调试的时候应该仅仅是告诉你有这回事。 我擦。。。我还的确没有正式运行过。。。 为何这个代码VS调试的时候不会捕捉呢。。。 难道我让我不能调试下去?。。。
调试的时候都是这样的。
Kation 2012-11-05
  • 打赏
  • 举报
回复
引用 10 楼 sbwwkmyd 的回复:
引用 9 楼 ZIP_xG 的回复:为何我的不能。。。 这个正常跑的时候应该没问题,VS调试的时候应该仅仅是告诉你有这回事。
我擦。。。我还的确没有正式运行过。。。 为何这个代码VS调试的时候不会捕捉呢。。。 难道我让我不能调试下去?。。。
showjim 2012-11-05
  • 打赏
  • 举报
回复
引用 9 楼 ZIP_xG 的回复:
为何我的不能。。。
这个正常跑的时候应该没问题,VS调试的时候应该仅仅是告诉你有这回事。
Kation 2012-11-05
  • 打赏
  • 举报
回复
引用 8 楼 haukwong 的回复:
引用 7 楼 ZIP_xG 的回复:引用 6 楼 haukwong 的回复:C# code12345678910111213141516171819202122 public static void testInvok() { Console.WriteLine("testInvok"); strin……

为何我的不能。。。
Hauk 2012-11-05
  • 打赏
  • 举报
回复
引用 7 楼 ZIP_xG 的回复:
引用 6 楼 haukwong 的回复:C# code12345678910111213141516171819202122 public static void testInvok() { Console.WriteLine("testInvok"); string str = "aaa"; ……
能啊
Kation 2012-11-05
  • 打赏
  • 举报
回复
引用 6 楼 haukwong 的回复:
C# code12345678910111213141516171819202122 public static void testInvok() { Console.WriteLine("testInvok"); string str = "aaa"; int i = Conv……
相当于在你的testInvok里面throw exception 这个不能捕捉?
Kation 2012-11-04
  • 打赏
  • 举报
回复
有没有人知道为什么。。。
Kation 2012-11-04
  • 打赏
  • 举报
回复
引用 3 楼 sbwwkmyd 的回复:
我的意思是,也许method调用了一个异步操作或者new了一个线程
没有这个情况。。。 我是测试代码,知道哪里出错。 而且调用堆栈里面,是从这里Try开始的
showjim 2012-11-04
  • 打赏
  • 举报
回复
我的意思是,也许method调用了一个异步操作或者new了一个线程
Kation 2012-11-04
  • 打赏
  • 举报
回复
引用 1 楼 sbwwkmyd 的回复:
可能抛出异常的不是当前线程吧
所有Invoke全部从这里的Try...Catch...中执行。。。
showjim 2012-11-04
  • 打赏
  • 举报
回复
可能抛出异常的不是当前线程吧

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧