首页 新闻 会员 周边 捐助

C# 代理抛异常 但是看不到代理的代码

0
悬赏园豆:20 [已解决问题] 解决于 2021-02-01 17:32

部分代码

namespace RT
{
    public delegete void FrameReceivedDelegate(byte[] Frame,int actuallyLength);
    
    public class Decoder
    {
         public event FrameReceivedDelegate FrameReceived;

         public void ProcessSignal(string text){
         
         byte[] frame = new byte[text.Length/2];
         .......
         .......
         .......
         if(FrameReceived != null)
         {
             FrameReceived(frame,frameBitLength / 8);//这句话这里抛异常
         }
    }
}


异常

引发的异常:“System.InvalidOperationException”(位于 mscorlib.dll 中)
System.InvalidOperationException : 可为空的对象必须具有一个值

我查看public event FrameReceivedDelegate FrameReceived;全部引用,发现只有这一处有用到这个
Console.WriteLine(ex.Message);

Console.WriteLine(ex.StackTrace);

echo_lovely的主页 echo_lovely | 小虾三级 | 园豆:1581
提问于:2021-02-01 13:30
< >
分享
最佳答案
0

有完整錯誤的callstack 嗎?
這樣看不太出來

收获园豆:17
RosonJ | 老鸟四级 |园豆:4910 | 2021-02-01 13:40

我修改了问题,你再看看?

echo_lovely | 园豆:1581 (小虾三级) | 2021-02-01 14:02

@小草上飞飞:
這段代碼中,有哪個變量是Nullable 類型嗎?

RosonJ | 园豆:4910 (老鸟四级) | 2021-02-01 14:12

@RosonJ: 都是var ,要死了

echo_lovely | 园豆:1581 (小虾三级) | 2021-02-01 14:13

@RosonJ: 找到了那个Nullable的变量呢?把他做个处理吗?

echo_lovely | 园豆:1581 (小虾三级) | 2021-02-01 14:15

@小草上飞飞:
var 並不改變類型
看看有沒有方法回傳、變量或是類別屬性是Nullable (例如: int?, decimal?,後面帶問號的)
因為從錯誤訊息來看是Nullable 類型的變量沒有值

RosonJ | 园豆:4910 (老鸟四级) | 2021-02-01 14:18

@小草上飞飞:
確定它在被使用前有被賦予值,而不是null 的狀態

RosonJ | 园豆:4910 (老鸟四级) | 2021-02-01 14:19

@RosonJ: 对Double? 类型直接(Double)处理了,我是不是只要对null时做个处理就好了?

echo_lovely | 园豆:1581 (小虾三级) | 2021-02-01 14:36

@小草上飞飞:
恩,先對null 的情況處理

RosonJ | 园豆:4910 (老鸟四级) | 2021-02-01 14:44

@RosonJ: 做完处理,发现还有一个异常。但是我try...catch 捕获不到

引发的异常:“System.InvalidOperationException”(位于 rt.server.dll 中)

···
rt.server

···是我们一个引用的项目,我有源码,我给所有引用的方法都加了try。。。catch。。还是捕获不到异常

echo_lovely | 园豆:1581 (小虾三级) | 2021-02-01 16:01

@小草上飞飞:
在最外層加try catch 也攔不到?

RosonJ | 园豆:4910 (老鸟四级) | 2021-02-01 16:13

@RosonJ: https://www.cnblogs.com/tomahawk/articles/5993874.html
我按照他这么写都不行,三种方法都试了

echo_lovely | 园豆:1581 (小虾三级) | 2021-02-01 16:18

@小草上飞飞:
rt.server.dll
這顆dll 若是有做過特殊處理,有可能無法捕獲詳細錯誤資訊
只能開原碼看看,被呼叫的方法有沒有可能的錯誤點

RosonJ | 园豆:4910 (老鸟四级) | 2021-02-01 16:23

@RosonJ: 这个rt.server项目是解析信号的,里面有好多东西不知道怎么执行的

echo_lovely | 园豆:1581 (小虾三级) | 2021-02-01 17:28

@RosonJ: 我给里面所有的方法挨个都加了try ...catch...,把所有的异常都抛出,我算是找到了

echo_lovely | 园豆:1581 (小虾三级) | 2021-02-01 17:29

@RosonJ: 信号解析里判定两个东西不等,就new InvilidOperationException();但是我为啥在外面捕获不到啊

echo_lovely | 园豆:1581 (小虾三级) | 2021-02-01 17:31

@小草上飞飞:
我只知道可以讓外部無法取得詳細錯誤資訊
但我司有一間合作銀行的dll ,就做到無法攔截exception ,我們的人也沒研究出來
如果你找的做法,再跟我分享吧

RosonJ | 园豆:4910 (老鸟四级) | 2021-02-01 17:36
其他回答(1)
0

通过InnerException 可以得到具体错误的详细信息

收获园豆:3
Tom.汤 | 园豆:3060 (老鸟四级) | 2021-02-01 14:18

我试出来了,哈哈哈,谢谢

支持(0) 反对(0) echo_lovely | 园豆:1581 (小虾三级) | 2021-02-01 14:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册