C#探秘系列(三)——StackTrace,Trim
发布时间:2022-04-27 21:24:03
一: Environment.StackTrace
可能我们看到最多的就是catch中的e参数,里面会有一个StackTrace,然后不可否认的这玩意太有用了,它会把调用堆栈中的信息输出出来,有了它,我们就可以快速的知道运行代码的执行流并且快速的定位到问题。
有时候我们会遇到这样两个问题:
①:线上的bug在本地不能重现。
②:由于太多的多态,设计模式,程序员反而对线上的代码执行流向会搞的稀里糊涂的。
为了搞清楚并解决这两个问题,我们看生产日志的时候很在乎代码的执行流以及想获取当前上下文的可疑变量值。获取可疑的变量值,这个好说,我们通过记录一些变量值到log就可以了,但是怎么记录下当前语句的调用堆栈信息呢?这篇就是我要介绍的一个属性,很简单, 答案也就在标题上,下面我们看看代码。
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);
}
}
这不。。。文件名,方法名,行数都已经脱裤了,也算是给我们看生产日志时候的一把利器吧。
二:Trim
这个我想没有程序员说不知道,但是里面有一个重载,这个不知道有多少程序员知道~
可以看到,我可以去掉字符串前后的指定字符,只要我在char[]中申请即可,而不是仅仅去掉空格,这次为什么要提它,是因为前几天用asp对接.net的时候遇到的,在asp中有一个join方法,但是它不像C#中的String.Join(",")方法可以去掉尾部的“,” ,比如数组{1,2,3},在asp中join后会变成“1,2,3,”,而C#中会变成"1,2,3",这个时候当asp传过来的话,在C#中就可以用Trim来剔除尾部的“,”了。
var s = "1,2,3,";
var r = s.Trim(new char[] { ',' });
Console.WriteLine(r);
Console.Read();
好了,大体就这样了,没什么技术含量,重点就是挖一挖,或许对你有用~
猜你喜欢
- 依赖<dependency> <groupId>com.baomidou</groupId> <a
- 问题(1)重入锁是什么?(2)ReentrantLock如何实现重入锁?(3)ReentrantLock为什么默认是非公平模式?(4)Ree
- 前言sql注入是web开发中最常见的一种安全漏洞。可以用它来从数据库获取敏感信息、利用数据库的特性执行添加用户、导出文件等一系列恶意操作,甚
- 写在前面,在笔者完成这个demo的时候,笔者发现现在大家已经不用Ajax来完成联级菜单了,实际上笔者这个demo也并不是为了完成这个,笔者主
- 前言:本篇文章将介绍Java多线程中的几个典型案例之单例模式,所谓单例模式,就是一个类只有一个实例对象,本文将着重介绍在多线程的背景下,单例
- 在Spring中进行事务管理非常简单,只需要在方法上加上注解@Transactional,Spring就可以自动帮我们进行事务的开启、提交、
- 目录前言Hello World1.可以在 Spring Initializr上面添加,也可以手动在 pom.xml中添加如下代码∶2. 编写
- 这篇文章主要介绍了Springboot整合Shiro的代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- 前言:本质上来说,CoreCLR 也是 C++ 写的,所以也逃不过用 虚表 来实现多态的玩法, 不过玩法也稍微复杂了一些,希望本篇对大家有帮
- 前言在 Java 中,跳转的实现方式有两种:请求转发和请求重定向,但二者是完全不同的,所以我们今天就来盘它。请求转发和请求重定向主要区别,包
- 目录1.@ 根据id更新2.@ 条件构造器作为参数进行更新3.@ lambda构造器mybatisplus update语句为null时没有
- 概念尽量使用合成/聚合,而不是使用继承实现复用。所谓的合成/聚合是指一个对象里持有另外一个类的对象,通过调用这些对象的方法得到复用已有功能的
- 全面解析java注解Java中的常见注解 a.JDK中的注解 @Override 覆盖父类或者父接口的方
- No ‘Access-Control-Allow-Origin‘ header is present
- Java HashSetHashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。HashSet 允许有 null 值。
- 我就废话不多说了,大家还是直接看代码吧~/// <summary> /// 字符串转Unicode //
- 突然心血来潮,想自己做个小程序玩玩,但是怎么把他做成一个exe文件,让大家能够更好的理解和使用呢,百度了一下,说是需要exe4j来生成,但是
- 公司的老项目要改造多租户,于是进入了大坑,本文写点遇到的坑以及解决方案,每次遇到问题在网上搜了好久,记录下来,防止以后忘掉。(一).方案网上
- IDEA设置文档注释模板创建Class文件时自动生成的头部注释如图如何配置idea的头部注释格式,可以生成像之前的注释格式一样的文档注释?F
- 目前有两种流行Spring定时器配置:Java的Timer类和OpenSymphony的Quartz。1.Java Timer定时首先继承j