啧啧歪 发表于 2021-3-10 09:45:55

【7.0内测版1】运行项目时弹出的错误框,无助于开发人员定位错误

本帖最后由 啧啧歪 于 2021-3-10 09:50 编辑

用6.0.104开发的项目,现在用【7.0内测版1】打开后,运行时弹出以下错误对话框,无法帮助开发人员定位出错位置:

异常错误报告如下:
## Overview
- Version: 7.0.0.0
- Exception: `System.ArgumentNullException`
- DateTime: 2021/3/10 9:47:45
- Email: 516140603@qq.com
- Tags: #CN

## Exception
```json
{
"ClassName": "System.ArgumentNullException",
"Message": "值不能为 null。",
"Data": {
    "$type": "System.Collections.ListDictionaryInternal, mscorlib",
    "System.Object": null
},
"InnerException": null,
"HelpURL": null,
"StackTraceString": "   在 System.ThrowHelper.ThrowArgumentNullException(ExceptionArgument argument)
   在 System.Collections.Generic.Dictionary`2.FindEntry(TKey key)
   在 System.Collections.Generic.Dictionary`2.TryGetValue(TKey key, TValue& value)
   在 Forguncy.Model.Tables.TableCollection.TryGetTable(String name)
   在 Forguncy.HelpForm.ListViewEditStatusHelper.a(ListViewInfo A_0)
   在 Forguncy.HelpForm.ListViewEditStatusHelper..ctor(ListViewInfo listviewInfo, Worksheet locatedSheet)
   在 Forguncy.Model.ListViewWapperDesigner..ctor(ListViewInfo listViewInfo, String pageName)
   在 Forguncy.Model.BuilderCommandContextWrapper.<>c__DisplayClass18_0.<EnumAllListViewInfos>b__0(ListViewInfo l)
   在 System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()
   在 System.Linq.Enumerable.FirstOrDefault(IEnumerable`1 source, Func`2 predicate)
   在 JsonDataSource.ImportJsonDataToListviewCommandDesigner.<CheckCommandErrors>d__1.MoveNext()
   在 Forguncy.GeneratePage.GenerateChecker.CommandChecker.<Check>d__2.MoveNext()
   在 Forguncy.GeneratePage.GenerateChecker.CommandChecker.<Check>d__0.MoveNext()
   在 System.Linq.Enumerable.<ConcatIterator>d__59`1.MoveNext()
   在 System.Linq.Enumerable.<ConcatIterator>d__59`1.MoveNext()
   在 System.Linq.Enumerable.<ConcatIterator>d__59`1.MoveNext()
   在 System.Linq.Enumerable.<ConcatIterator>d__59`1.MoveNext()
   在 System.Linq.Enumerable.<ConcatIterator>d__59`1.MoveNext()
   在 System.Linq.Enumerable.<ConcatIterator>d__59`1.MoveNext()
   在 System.Linq.Enumerable.<ConcatIterator>d__59`1.MoveNext()
   在 System.Linq.Enumerable.<ConcatIterator>d__59`1.MoveNext()
   在 System.Linq.Enumerable.<ConcatIterator>d__59`1.MoveNext()
   在 System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   在 System.Linq.Enumerable.ToList(IEnumerable`1 source)
   在 Forguncy.GeneratePage.GenerateChecker.PreGenerateErrorChecker.GetErrorInfos()
   在 Forguncy.GeneratePage.GeneratePages.IsGenerateValidated(Boolean forceCheck)
   在 Forguncy.Views.RibbonView.<BrowserHomeExcutedWithProgressbarAsync>d__364.MoveNext()
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   在 Forguncy.Views.RibbonView.<>c__DisplayClass364_0.<<BrowserHomeExcutedWithProgressbarAsync>b__0>d.MoveNext()
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   在 WPFBase.Common.TaskInfoHelper.<CreateAThreadCrossedAutoClosedWindowAsync>d__8.MoveNext()
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   在 Forguncy.Views.RibbonView.<BrowserHomeExcutedWithProgressbarAsync>d__364.MoveNext()
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   在 Forguncy.Views.RibbonView.<BrowserHomeExcuted>d__362.MoveNext()
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   在 System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   在 System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)",
"RemoteStackTraceString": null,
"RemoteStackIndex": 0,
"ExceptionMethod": "8
ThrowArgumentNullException
mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.ThrowHelper
Void ThrowArgumentNullException(System.ExceptionArgument)",
"HResult": -2147467261,
"Source": "mscorlib",
"WatsonBuckets": null,
"ParamName": "key"
}
```

## EventLog
- 09:47:43 `MouseL`:Window:pm_v2021_V7.0.fgcc - 活字格->RibbonView->RibbonGroupBox:调试->Image:/Start_32.png
- 09:47:32 `MouseL`:Window:活字格
- 09:47:31 `MouseL`:Window:活字格
- 09:47:30 `MouseL`:Window:活字格
- 09:47:29 `MouseL`:Window:WelcomeScreen->Button:关闭
- 09:47:27 `MouseL`:Window:活字格

## ActionList



Timothy.Xu 发表于 2021-3-10 09:51:28

您好,这个问题目前我们已知的情况是由于页面上绑定了空表格引起的。您可以查看下工程,是否与这种情况符合。

啧啧歪 发表于 2021-3-10 09:59:08

个人觉得不是空表格,我在6.0.104中运行时没有错误的。如果绑定空表,6.0运行也会出问题的

Timothy.Xu 发表于 2021-3-10 10:01:19

啧啧歪 发表于 2021-3-10 09:59
个人觉得不是空表格,我在6.0.104中运行时没有错误的。如果绑定空表,6.0运行也会出问题的

绑定空表格的场合,在 6.0.104.0 并不会出现问题的吧?

啧啧歪 发表于 2021-3-10 10:15:23

Timothy.Xu 发表于 2021-3-10 10:01
绑定空表格的场合,在 6.0.104.0 并不会出现问题的吧?

项目里面有大几十个页面,我怎么能快速定位到那个页面?

Timothy.Xu 发表于 2021-3-10 10:23:43

啧啧歪 发表于 2021-3-10 10:15
项目里面有大几十个页面,我怎么能快速定位到那个页面?

暂时可以使用 Ctrl+F 的查询来做,有两个方式来查询:

1、查找范围为【表格】,然后根据您这边表格的名称来进行查询,如果您没有单独给表格设置名称,那么所有的表格都包含“表格”二字;

2、由于空表格往往与发送 HTTP 请求命令和导入 JSON 数据到表格命令结合使用,所以可以设置查找范围为【命令】,然后查询这两个命令,找到相关的页面去找是否有空表格。

啧啧歪 发表于 2021-3-10 11:01:18

Timothy.Xu 发表于 2021-3-10 10:23
暂时可以使用 Ctrl+F 的查询来做,有两个方式来查询:

1、查找范围为【表格】,然后根据您这边表格的 ...

空表格是指没有绑定表格,还是返回数据的记录数为0

Timothy.Xu 发表于 2021-3-10 11:05:48

啧啧歪 发表于 2021-3-10 11:01
空表格是指没有绑定表格,还是返回数据的记录数为0

指的是没有绑定数据源的表格:

啧啧歪 发表于 2021-3-10 11:23:11

我已经搜索了所有表格,把没有绑定数据源的表格都删除了,依然弹出相同错误。

个人觉得,此错误应该作为bug修复,没有绑定数据源,应该不执行查询操作,而不是弹出错误终止。
否则,老版本项目升级至7.0会很麻烦

Timothy.Xu 发表于 2021-3-10 11:30:42

啧啧歪 发表于 2021-3-10 11:23
我已经搜索了所有表格,把没有绑定数据源的表格都删除了,依然弹出相同错误。

个人觉得,此错误应该作为 ...

我上面提到的这个情况确实是一个已知的问题:


如果您删除了所有空表格依然有此问题,可能需要您提供一下出现问题的工程文件,我们需要结合底层代码实际检测一下是否有新的问题。您可以在上传附件的时候将权限设置为150(也就是超级版主用户组),这样就只有活字格工作人员可以浏览您的附件~
页: [1]
查看完整版本: 【7.0内测版1】运行项目时弹出的错误框,无助于开发人员定位错误