C#探秘系列(三)——StackTrace,Trim
一: Environment.StackTrace
可能我們看到最多的就是catch中的e參數(shù),里面會(huì)有一個(gè)StackTrace,然后不可否認(rèn)的這玩意太有用了,它會(huì)把調(diào)用堆棧中的信息輸出出來(lái),有了它,我們就可以快速的知道運(yùn)行代碼的執(zhí)行流并且快速的定位到問題。
有時(shí)候我們會(huì)遇到這樣兩個(gè)問題:
①:線上的bug在本地不能重現(xiàn)。
②:由于太多的多態(tài),設(shè)計(jì)模式,程序員反而對(duì)線上的代碼執(zhí)行流向會(huì)搞的稀里糊涂的。
為了搞清楚并解決這兩個(gè)問題,我們看生產(chǎn)日志的時(shí)候很在乎代碼的執(zhí)行流以及想獲取當(dāng)前上下文的可疑變量值。獲取可疑的變量值,這個(gè)好說(shuō),我們通過(guò)記錄一些變量值到log就可以了,但是怎么記錄下當(dāng)前語(yǔ)句的調(diào)用堆棧信息呢?這篇就是我要介紹的一個(gè)屬性,很簡(jiǎn)單, 答案也就在標(biāo)題上,下面我們看看代碼。
class Program
{
static void Main(string[] args)
{
Person person = new Person();
person.Fly();
Console.Read();
}
}
class Person
{
public void Fly()
{
Fly("test");
}
public void Fly(string name)
{
Console.WriteLine("我的log日志。\n\n{0}", Environment.StackTrace);
}
}
![]() |
這不。。。文件名,方法名,行數(shù)都已經(jīng)脫褲了,也算是給我們看生產(chǎn)日志時(shí)候的一把利器吧。
二:Trim
這個(gè)我想沒有程序員說(shuō)不知道,但是里面有一個(gè)重載,這個(gè)不知道有多少程序員知道~
可以看到,我可以去掉字符串前后的指定字符,只要我在char[]中申請(qǐng)即可,而不是僅僅去掉空格,這次為什么要提它,是因?yàn)榍皫滋煊胊sp對(duì)接.net的時(shí)候遇到的,在asp中有一個(gè)join方法,但是它不像C#中的String.Join(",")方法可以去掉尾部的“,” ,比如數(shù)組{1,2,3},在asp中join后會(huì)變成“1,2,3,”,而C#中會(huì)變成"1,2,3",這個(gè)時(shí)候當(dāng)asp傳過(guò)來(lái)的話,在C#中就可以用Trim來(lái)剔除尾部的“,”了。
var s = "1,2,3,";
var r = s.Trim(new char[] { ',' });
Console.WriteLine(r);
Console.Read();
好了,大體就這樣了,沒什么技術(shù)含量,重點(diǎn)就是挖一挖,或許對(duì)你有用~
- C#使用Object類實(shí)現(xiàn)棧的方法詳解
- C#數(shù)據(jù)結(jié)構(gòu)之堆棧(Stack)實(shí)例詳解
- 一看就懂:圖解C#中的值類型、引用類型、棧、堆、ref、out
- C#使用foreach語(yǔ)句遍歷堆棧(Stack)的方法
- 淺談C#中堆和棧的區(qū)別(附上圖解)
- c#棧變化規(guī)則圖解示例(棧的生長(zhǎng)與消亡)
- 解析c#在未出現(xiàn)異常情況下查看當(dāng)前調(diào)用堆棧的解決方法
- C#棧和堆的區(qū)別淺談
- C#數(shù)據(jù)結(jié)構(gòu)與算法揭秘五 棧和隊(duì)列
- C#創(chuàng)建安全的棧(Stack)存儲(chǔ)結(jié)構(gòu)
相關(guān)文章
C#使用iTextSharp封裝的PDF文件操作類實(shí)例
這篇文章主要介紹了C#使用iTextSharp封裝的PDF文件操作類,實(shí)例分析了C#操作pdf文件的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-03-03C# OpenFileDialog對(duì)話框控件的使用
OpenFileDialog是C#中常用的對(duì)話框控件,用于讓用戶選擇文件,本文就來(lái)介紹一下OpenFileDialog對(duì)話框控件的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09Enterprise Library for .NET Framework 2.0緩存使用實(shí)例
這篇文章主要介紹了Enterprise Library for .NET Framework 2.0緩存使用實(shí)例,是進(jìn)行項(xiàng)目開發(fā)時(shí)非常有用的功能,需要的朋友可以參考下2014-08-08Unity實(shí)現(xiàn)植物識(shí)別示例詳解
這篇文章主要介紹了如何通過(guò)Unity接入百度AI實(shí)現(xiàn)植物識(shí)別,接口返回植物的名稱,并支持獲取識(shí)別結(jié)果對(duì)應(yīng)的百科信息。感興趣的可以了解一下2022-01-01深入學(xué)習(xí)C#網(wǎng)絡(luò)編程之HTTP應(yīng)用編程(上)
這篇文章主要介紹了如何學(xué)習(xí)C#網(wǎng)絡(luò)編程之HTTP應(yīng)用編程的相關(guān)知識(shí),文中講解的非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-06-06C#程序執(zhí)行時(shí)間長(zhǎng)查詢速度慢解決方案
這篇文章主要介紹了C#程序執(zhí)行時(shí)間長(zhǎng)查詢速度慢解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07深入解析C#設(shè)計(jì)模式中對(duì)橋接模式的具體運(yùn)用
這篇文章主要介紹了C#設(shè)計(jì)模式中對(duì)橋接模式的具體運(yùn)用,橋接模式所強(qiáng)調(diào)的解耦在代碼維護(hù)中非常有用,需要的朋友可以參考下2016-02-02