Exception.ToString 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
创建并返回当前异常的字符串表示形式。
public:
override System::String ^ ToString();
public override string ToString ();
override this.ToString : unit -> string
Public Overrides Function ToString () As String
返回
当前异常的字符串表示形式。
实现
示例
以下示例导致异常,并显示对该异常调用 ToString 的结果。 请注意, Exception.ToString 当 Exception 类实例出现在方法的参数列表中 Console.WriteLine 时,将隐式调用 方法。
using namespace System;
public ref class TestClass{};
int main()
{
TestClass^ test = gcnew TestClass;
array<Object^>^ objectsToCompare = { test, test->ToString(), 123,
(123).ToString(), "some text",
"Some Text" };
String^ s = "some text";
for each (Object^ objectToCompare in objectsToCompare) {
try {
Int32 i = s->CompareTo(objectToCompare);
Console::WriteLine("Comparing '{0}' with '{1}': {2}",
s, objectToCompare, i);
}
catch (ArgumentException^ e) {
Console::WriteLine("Bad argument: {0} (type {1})",
objectToCompare,
objectToCompare->GetType()->Name);
Console::WriteLine("Exception information: {0}", e);
}
Console::WriteLine();
}
}
// The example displays the following output:
// Bad argument: TestClass (type TestClass)
// Exception information: System.ArgumentException: Object must be of type String.
// at System.String.CompareTo(Object value)
// at Example.Main()
//
// Comparing 'some text' with 'TestClass': -1
//
// Bad argument: 123 (type Int32)
// Exception information: System.ArgumentException: Object must be of type String.
// at System.String.CompareTo(Object value)
// at Example.Main()
//
// Comparing 'some text' with '123': 1
//
// Comparing 'some text' with 'some text': 0
//
// Comparing 'some text' with 'Some Text': -1
using System;
public class TestClass
{}
public class Example
{
public static void Main()
{
var test = new TestClass();
Object[] objectsToCompare = { test, test.ToString(), 123,
123.ToString(), "some text",
"Some Text" };
string s = "some text";
foreach (var objectToCompare in objectsToCompare) {
try {
int i = s.CompareTo(objectToCompare);
Console.WriteLine("Comparing '{0}' with '{1}': {2}",
s, objectToCompare, i);
}
catch (ArgumentException e) {
Console.WriteLine("Bad argument: {0} (type {1})",
objectToCompare,
objectToCompare.GetType().Name);
Console.WriteLine("Exception information: {0}", e);
}
Console.WriteLine();
}
}
}
// The example displays the following output:
// Bad argument: TestClass (type TestClass)
// Exception information: System.ArgumentException: Object must be of type String.
// at System.String.CompareTo(Object value)
// at Example.Main()
//
// Comparing 'some text' with 'TestClass': -1
//
// Bad argument: 123 (type Int32)
// Exception information: System.ArgumentException: Object must be of type String.
// at System.String.CompareTo(Object value)
// at Example.Main()
//
// Comparing 'some text' with '123': 1
//
// Comparing 'some text' with 'some text': 0
//
// Comparing 'some text' with 'Some Text': -1
open System
type TestClass() = class end
let test = TestClass()
let objectsToCompare: obj[] =
[| test; test.ToString(); 123
string 123; "some text"
"Some Text" |]
let s = "some text"
for objectToCompare in objectsToCompare do
try
let i = s.CompareTo objectToCompare
printfn $"Comparing '{s}' with '{objectToCompare}': {i}"
with :? ArgumentException as e ->
printfn $"Bad argument: {objectToCompare} (type {objectToCompare.GetType().Name})"
printfn $"Exception information: {e}"
printfn ""
// The example displays the following output:
// Bad argument: Example+TestClass (type TestClass)
// Exception information: System.ArgumentException: Object must be of type String.
// at System.String.CompareTo(Object value)
// at <StartupCode$fs>.$Example.main@()
//
// Comparing 'some text' with 'Example+TestClass': -1
//
// Bad argument: 123 (type Int32)
// Exception information: System.ArgumentException: Object must be of type String.
// at System.String.CompareTo(Object value)
// at <StartupCode$fs>.$Example.main@()
//
// Comparing 'some text' with '123': 1
//
// Comparing 'some text' with 'some text': 0
//
// Comparing 'some text' with 'Some Text': -1
Public Class TestClass
End Class
Public Class Example
Public Shared Sub Main()
Dim test As New TestClass()
Dim objectsToCompare() As Object = { test, test.ToString(), 123,
123.ToString(), "some text",
"Some Text" }
Dim s As String = "some text"
For Each objectToCompare In objectsToCompare
Try
Dim i As Integer = s.CompareTo(objectToCompare)
Console.WriteLine("Comparing '{0}' with '{1}': {2}",
s, objectToCompare, i)
Catch e As ArgumentException
Console.WriteLine("Bad argument: {0} (type {1})",
objectToCompare,
objectToCompare.GetType().Name)
Console.WriteLine("Exception information: {0}", e)
End Try
Console.WriteLine()
Next
End Sub
End Class
' The example displays the following output:
' Bad argument: TestClass (type TestClass)
' Exception information: System.ArgumentException: Object must be of type String.
' at System.String.CompareTo(Object value)
' at Example.Main()
'
' Comparing 'some text' with 'TestClass': -1
'
' Bad argument: 123 (type Int32)
' Exception information: System.ArgumentException: Object must be of type String.
' at System.String.CompareTo(Object value)
' at Example.Main()
'
' Comparing 'some text' with '123': 1
'
' Comparing 'some text' with 'some text': 0
'
' Comparing 'some text' with 'Some Text': -1
注解
ToString 返回旨在由人类理解的当前异常的表示形式。 如果异常包含区域性敏感数据,则 返回的字符串表示形式 ToString
需要考虑当前的系统区域性。 尽管对返回的字符串的格式没有确切要求,但它应尝试反映用户感知到的对象值。
的默认实现 ToString 获取引发当前异常的类的名称、消息、对内部异常调用 ToString 的结果以及调用 Environment.StackTrace的结果。 如果其中任一成员为 null
,则返回的字符串中不包含其值。
如果没有错误消息,或者它是空字符串 (“”) ,则不会返回任何错误消息。 仅当内部异常和堆栈跟踪不是 null
时,才会返回内部异常和堆栈跟踪的名称。
此方法重写 Object.ToString。