关于Exception对象.ToString()的问题

.Net技术 码拜 10年前 (2015-07-11) 1694次浏览 0个评论

1:C# 中ex+””;调用的是ex.ToString()还是ex.Message.ToString();
2:ex.ToString();输出的是Exception的哪个属性?
3:ex.Message.ToString()输出的又是哪个属性?

我现在在上班,可能晚点回复,不好意思。

1分

1:ex 是个对象,怎么能和 字符串 放在一起。
2:应该是它的类型名称
3:是从Message 出来的,当然是Message属性了。

5分

1和2调用的都是object的ToString()方法,该方法在Exception类里面被override了
3你都点出Message了,你F12看下Message就知道它是个字符串了,根本不需要ToString

//
        // 摘要:
        //     获取描述当前异常的消息。
        //
        // 返回结果:
        //     解释异常原因的错误消息或空字符串 ("")。
        public virtual string Message { get; }
//
        // 摘要:
        //     创建并返回当前异常的字符串表示形式。
        //
        // 返回结果:
        //     当前异常的字符串表示形式。
        public override string ToString();

13分

1:C# 中ex+””;调用的是ex.ToString()还是ex.Message.ToString();
ex.ToString()

2:ex.ToString();输出的是Exception的哪个属性?
类名 + Message + InnerException信息(如果有) + GetStackTrace的返回值

3:ex.Message.ToString()输出的又是哪个属性?
Message本身就是字符串,返回自己

13分

1.将一个非字符串类型的变量和字符串类型做加法,当然会隐式的将它ToString(),而不是将它的某个属性ToString
所以是ex.ToString(),编译器才不会智能到给你找到Message再ToString()

5分

1:C# 中ex+””;调用的是ex.ToString()还是ex.Message.ToString();
是ex.ToString()
2:ex.ToString();输出的是Exception的哪个属性?
不是哪个属性,就是ex的字符串表示形式
3:ex.Message.ToString()输出的又是哪个属性?
输出ex.Message

3分

不知道你干嘛要tostring~ 最好不要tostring
把整个异常都记录下来~

看看log4net是怎么记录异常的:log.Error


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于Exception对象.ToString()的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!