c# - 我如何才能在 C# 中只获取异常堆栈跟踪消息的第一行?
问题描述
我不想出于调试目的打印堆栈跟踪消息,但我只想要第一行,因为我有兴趣了解问题的根源。
例子:
at Solution.Models.Class.Method() in C:\Users\...\Models\Class.cs:line 1118 <-- i´m only interested in this
at Solution.Models.Class.AddSomething(Something _something) in C:\Users\...\Solution\Models\Class.cs:line 518
解决方案
var firstLine = originalMessage
.Split(Environment.NewLine)
.FirstOrDefault();
在哪里:
originalMessage
- 您要从中获取信息的字符串;.Split()
- 返回一个字符串数组,该数组由您originalMessage
除以传递的参数的子字符串组成Environment.NewLine
;Environment.NewLine
- 获取为此环境定义的换行符字符串。\r\n
对于非 Unix 平台,或\n
Unix 平台;.FirstOrDefault()
- 返回序列的第一个元素,如果没有找到元素,则返回默认值;
Environment.NewLine
这是一个 Linq 表达式,由于使用而不是硬编码,它可以在所有平台上运行,无论是 Linux、Windows 还是 Mac "\r\n"
。此外,通过将 Linq 表达式彼此堆叠在一起,您可以构建一个特定的管道,上面写着:
- 我正在拿一根绳子;
- 然后我通过行分隔符将其拆分为子字符串;
- 并从结果中取出第一个子字符串;
推荐阅读
- kubernetes-health-check - IApplicationBuilder 不包含 UseHealthChecks 的定义
- azure-cosmosdb - Gremlin客户管理
- php - 用 Wordpress 中变量中包含的字符串替换页面内容的挂钩
- css - 无法让滚动捕捉全屏工作
- rdbms - 关系数据库管理系统
- python - 带掩码的 numpy 赋值
- google-sheets - “冻结”谷歌表格列值
- python - 使用 apply 更新 Dataframe 中的行不起作用
- c# - Unity 播放器的射击功能将不起作用
- javascript - 如何在javascript代码中执行另一个nodejs?