本文整理汇总了C#中System.Exception.Exception构造函数的典型用法代码示例。如果您正苦于以下问题:C# Exception构造函数的具体用法?C# Exception怎么用?C# Exception使用的例子?那么, 这里精选的构造函数代码示例或许可以为您提供帮助。您也可以进一步了解该构造函数所在类System.Exception
的用法示例。
在下文中一共展示了Exception构造函数的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: NotEvenException
// Example for the Exception( ) constructor.
using System;
namespace NDP_UE_CS
{
// Derive an exception with a predefined message.
class NotEvenException : Exception
{
public NotEvenException( ) :
base( "The argument to a function requiring " +
"even input is not divisible by 2." )
{ }
}
class NewExceptionDemo
{
public static void Main()
{
Console.WriteLine(
"This example of the Exception( ) constructor " +
"generates the following output." );
Console.WriteLine(
"\nHere, an exception is thrown using the \n" +
"parameterless constructor of the base class.\n" );
CalcHalf( 12 );
CalcHalf( 15 );
Console.WriteLine(
"\nHere, an exception is thrown using the \n" +
"parameterless constructor of a derived class.\n" );
CalcHalf2( 24 );
CalcHalf2( 27 );
}
// Half throws a base exception if the input is not even.
static int Half( int input )
{
if( input % 2 != 0 )
throw new Exception( );
else return input / 2;
}
// Half2 throws a derived exception if the input is not even.
static int Half2( int input )
{
if( input % 2 != 0 )
throw new NotEvenException( );
else return input / 2;
}
// CalcHalf calls Half and catches any thrown exceptions.
static void CalcHalf(int input )
{
try
{
int halfInput = Half( input );
Console.WriteLine(
"Half of {0} is {1}.", input, halfInput );
}
catch( Exception ex )
{
Console.WriteLine( ex.ToString( ) );
}
}
// CalcHalf2 calls Half2 and catches any thrown exceptions.
static void CalcHalf2(int input )
{
try
{
int halfInput = Half2( input );
Console.WriteLine(
"Half of {0} is {1}.", input, halfInput );
}
catch( Exception ex )
{
Console.WriteLine( ex.ToString( ) );
}
}
}
}
输出:
Here, an exception is thrown using the parameterless constructor of the base class. Half of 12 is 6. System.Exception: Exception of type System.Exception was thrown. at NDP_UE_CS.NewExceptionDemo.Half(Int32 input) at NDP_UE_CS.NewExceptionDemo.CalcHalf(Int32 input) Here, an exception is thrown using the parameterless constructor of a derived class. Half of 24 is 12. NDP_UE_CS.NotEvenException: The argument to a function requiring even input is not divisible by 2. at NDP_UE_CS.NewExceptionDemo.Half2(Int32 input) at NDP_UE_CS.NewExceptionDemo.CalcHalf2(Int32 input)
示例2: NotEvenException
// Example for the Exception( string ) constructor.
using System;
namespace NDP_UE_CS
{
// Derive an exception with a specifiable message.
class NotEvenException : Exception
{
const string notEvenMessage =
"The argument to a function requiring " +
"even input is not divisible by 2.";
public NotEvenException( ) :
base( notEvenMessage )
{ }
public NotEvenException( string auxMessage ) :
base( String.Format( "{0} - {1}",
auxMessage, notEvenMessage ) )
{ }
}
class NewSExceptionDemo
{
public static void Main()
{
Console.WriteLine(
"This example of the Exception( string )\n" +
"constructor generates the following output." );
Console.WriteLine(
"\nHere, an exception is thrown using the \n" +
"constructor of the base class.\n" );
CalcHalf( 18 );
CalcHalf( 21 );
Console.WriteLine(
"\nHere, an exception is thrown using the \n" +
"constructor of a derived class.\n" );
CalcHalf2( 30 );
CalcHalf2( 33 );
}
// Half throws a base exception if the input is not even.
static int Half( int input )
{
if( input % 2 != 0 )
throw new Exception( String.Format(
"The argument {0} is not divisible by 2.",
input ) );
else return input / 2;
}
// Half2 throws a derived exception if the input is not even.
static int Half2( int input )
{
if( input % 2 != 0 )
throw new NotEvenException(
String.Format( "Invalid argument: {0}", input ) );
else return input / 2;
}
// CalcHalf calls Half and catches any thrown exceptions.
static void CalcHalf(int input )
{
try
{
int halfInput = Half( input );
Console.WriteLine(
"Half of {0} is {1}.", input, halfInput );
}
catch( Exception ex )
{
Console.WriteLine( ex.ToString( ) );
}
}
// CalcHalf2 calls Half2 and catches any thrown exceptions.
static void CalcHalf2(int input )
{
try
{
int halfInput = Half2( input );
Console.WriteLine(
"Half of {0} is {1}.", input, halfInput );
}
catch( Exception ex )
{
Console.WriteLine( ex.ToString( ) );
}
}
}
}
输出:
Here, an exception is thrown using the constructor of the base class. Half of 18 is 9. System.Exception: The argument 21 is not divisible by 2. at NDP_UE_CS.NewSExceptionDemo.Half(Int32 input) at NDP_UE_CS.NewSExceptionDemo.CalcHalf(Int32 input) Here, an exception is thrown using the constructor of a derived class. Half of 30 is 15. NDP_UE_CS.NotEvenException: Invalid argument: 33 - The argument to a function r equiring even input is not divisible by 2. at NDP_UE_CS.NewSExceptionDemo.Half2(Int32 input) at NDP_UE_CS.NewSExceptionDemo.CalcHalf2(Int32 input)
示例3: SecondLevelException
//引入命名空间
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Soap;
using System.Security.Permissions;
// Define a serializable derived exception class.
[Serializable()]
class SecondLevelException : Exception, ISerializable
{
// This public constructor is used by class instantiators.
public SecondLevelException( string message, Exception inner ) :
base( message, inner )
{
HelpLink = "http://MSDN.Microsoft.com";
Source = "Exception_Class_Samples";
}
// This protected constructor is used for deserialization.
protected SecondLevelException( SerializationInfo info,
StreamingContext context ) :
base( info, context )
{ }
// GetObjectData performs a custom serialization.
[SecurityPermissionAttribute(SecurityAction.Demand,SerializationFormatter=true)]
public override void GetObjectData( SerializationInfo info,
StreamingContext context )
{
// Change the case of two properties, and then use the
// method of the base class.
HelpLink = HelpLink.ToLower( );
Source = Source.ToUpperInvariant();
base.GetObjectData( info, context );
}
}
class SerializationDemo
{
public static void Main()
{
Console.WriteLine(
"This example of the Exception constructor " +
"and Exception.GetObjectData\nwith Serialization" +
"Info and StreamingContext parameters " +
"generates \nthe following output.\n" );
try
{
// This code forces a division by 0 and catches the
// resulting exception.
try
{
int zero = 0;
int ecks = 1 / zero;
}
catch( Exception ex )
{
// Create a new exception to throw again.
SecondLevelException newExcept =
new SecondLevelException(
"Forced a division by 0 and threw " +
"another exception.", ex );
Console.WriteLine(
"Forced a division by 0, caught the " +
"resulting exception, \n" +
"and created a derived exception:\n" );
Console.WriteLine( "HelpLink: {0}",
newExcept.HelpLink );
Console.WriteLine( "Source: {0}",
newExcept.Source );
// This FileStream is used for the serialization.
FileStream stream =
new FileStream( "NewException.dat",
FileMode.Create );
try
{
// Serialize the derived exception.
SoapFormatter formatter =
new SoapFormatter( null,
new StreamingContext(
StreamingContextStates.File ) );
formatter.Serialize( stream, newExcept );
// Rewind the stream and deserialize the
// exception.
stream.Position = 0;
SecondLevelException deserExcept =
(SecondLevelException)
formatter.Deserialize( stream );
Console.WriteLine(
"\nSerialized the exception, and then " +
"deserialized the resulting stream " +
"into a \nnew exception. " +
"The deserialization changed the case " +
"of certain properties:\n" );
// Throw the deserialized exception again.
throw deserExcept;
}
catch( SerializationException se )
{
Console.WriteLine( "Failed to serialize: {0}",
se.ToString( ) );
}
finally
{
stream.Close( );
}
}
}
catch( Exception ex )
{
Console.WriteLine( "HelpLink: {0}", ex.HelpLink );
Console.WriteLine( "Source: {0}", ex.Source );
Console.WriteLine( );
Console.WriteLine( ex.ToString( ) );
}
}
}
输出:
Forced a division by 0, caught the resulting exception, and created a derived exception: HelpLink: http://MSDN.Microsoft.com Source: Exception_Class_Samples Serialized the exception, and then deserialized the resulting stream into a new exception. The deserialization changed the case of certain properties: HelpLink: http://msdn.microsoft.com Source: EXCEPTION_CLASS_SAMPLES NDP_UE_CS.SecondLevelException: Forced a division by 0 and threw another except ion. ---> System.DivideByZeroException: Attempted to divide by zero. at NDP_UE_CS.SerializationDemo.Main() --- End of inner exception stack trace --- at NDP_UE_CS.SerializationDemo.Main()
示例4: LogTableOverflowException
// Example for the Exception( string, Exception ) constructor.
using System;
namespace NDP_UE_CS
{
// Derive an exception with a specifiable message and inner exception.
class LogTableOverflowException : Exception
{
const string overflowMessage =
"The log table has overflowed.";
public LogTableOverflowException( ) :
base( overflowMessage )
{ }
public LogTableOverflowException( string auxMessage ) :
base( String.Format( "{0} - {1}",
overflowMessage, auxMessage ) )
{ }
public LogTableOverflowException(
string auxMessage, Exception inner ) :
base( String.Format( "{0} - {1}",
overflowMessage, auxMessage ), inner )
{ }
}
class LogTable
{
public LogTable( int numElements )
{
logArea = new string[ numElements ];
elemInUse = 0;
}
protected string[ ] logArea;
protected int elemInUse;
// The AddRecord method throws a derived exception
// if the array bounds exception is caught.
public int AddRecord( string newRecord )
{
try
{
logArea[ elemInUse ] = newRecord;
return elemInUse++;
}
catch( Exception ex )
{
throw new LogTableOverflowException(
String.Format( "Record \"{0}\" was not logged.",
newRecord ), ex );
}
}
}
class OverflowDemo
{
// Create a log table and force an overflow.
public static void Main()
{
LogTable log = new LogTable( 4 );
Console.WriteLine(
"This example of the Exception( string, Exception )" +
"\nconstructor generates the following output." );
Console.WriteLine(
"\nExample of a derived exception " +
"that references an inner exception:\n" );
try
{
for( int count = 1; ; count++ )
{
log.AddRecord(
String.Format(
"Log record number {0}", count ) );
}
}
catch( Exception ex )
{
Console.WriteLine( ex.ToString( ) );
}
}
}
}
输出:
Example of a derived exception that references an inner exception: NDP_UE_CS.LogTableOverflowException: The log table has overflowed. - Record "Lo g record number 5" was not logged. ---> System.IndexOutOfRangeException: Index was outside the bounds of the array. at NDP_UE_CS.LogTable.AddRecord(String newRecord) --- End of inner exception stack trace --- at NDP_UE_CS.LogTable.AddRecord(String newRecord) at NDP_UE_CS.OverflowDemo.Main()