EncoderFallbackException Classe

Definizione

Eccezione generata quando l'operazione di fallback del codificatore non riesce.The exception that is thrown when an encoder fallback operation fails. Questa classe non può essere ereditata.This class cannot be inherited.

public ref class EncoderFallbackException sealed : ArgumentException
[System.Serializable]
public sealed class EncoderFallbackException : ArgumentException
type EncoderFallbackException = class
    inherit ArgumentException
Public NotInheritable Class EncoderFallbackException
Inherits ArgumentException
Ereditarietà
Attributi

Esempi

Nell'esempio di codice riportato di seguito vengono illustrate le classi EncoderExceptionFallback e EncoderFallbackException.The following code example demonstrates the EncoderExceptionFallback and EncoderFallbackException classes.

// This example demonstrates the EncoderExceptionFallback class.

using namespace System;
using namespace System::Text;

int main()
{
    // Create an encoding, which is equivalent to calling the
    // ASCIIEncoding class constructor.
    // The EncoderExceptionFallback parameter causes an exception to
    // be thrown when a character cannot be encoded.
    // A decoder exception fallback is also specified, but it is not
    // used because this example terminates during the encoding operation.

    Encoding^ asciiEncoding = Encoding::GetEncoding("us-ascii",
        gcnew EncoderExceptionFallback(), gcnew DecoderExceptionFallback());

    // The input string consists of the Unicode characters LEFT POINTING
    // DOUBLE ANGLE QUOTATION MARK (U+00AB), 'X' (U+0058), and RIGHT
    // POINTING DOUBLE ANGLE QUOTATION MARK (U+00BB).
    // The encoding can only encode characters in the US-ASCII range of
    // U+0000 through U+007F. Consequently, the characters bracketing the
    // 'X' character cause an exception.
    String^ inputString = L"\u00abX\u00bb";

    String^ twoNewLines = Environment::NewLine + Environment::NewLine;
    array<Byte>^ encodedBytes = gcnew array<Byte>(
        asciiEncoding->GetMaxByteCount(inputString->Length));
    int numberOfEncodedBytes = 0;

    // ---------------------------------------------------------------------
    Console::Clear();

    // Display the name of the encoding.
    Console::WriteLine("The name of the encoding is \"{0}\".{1}",
        asciiEncoding->WebName, Environment::NewLine);

    // Display the input string in text.
    Console::WriteLine("Input string ({0} characters): \"{1}\"",
        inputString->Length, inputString);

    // Display the input string in hexadecimal.
    Console::Write("Input string in hexadecimal: ");
    for each (char c in inputString)
    {
        Console::Write("0x{0:X2} ", c);
    }
    Console::Write(twoNewLines);

    // ---------------------------------------------------------------------
    // Attempt to encode the input string. However, an exception is thrown
    // before the input string can be encoded.

    Console::WriteLine("Encode the input string...");

    // The code example terminates during the call to the GetBytes() method.
    try
    {
        numberOfEncodedBytes = asciiEncoding->GetBytes(inputString, 0,
            inputString->Length, encodedBytes, 0);
        // This statement is never executed.
        Console::WriteLine("This statement is never executed.");
    }
    catch (EncoderFallbackException^ ex)
    {
        Console::WriteLine(ex);
        Console::WriteLine(
            "{0}*** THE CODE EXAMPLE TERMINATES HERE AS INTENDED. ***",
            Environment::NewLine);
    }
}

/*
This code example produces the following results:

The name of the encoding is "us-ascii".

Input string (3 characters): "X"
Input string in hexadecimal: 0xAB 0x58 0xBB

Encode the input string...
System.Text.EncoderFallbackException: Unable to translate Unicode character \u00AB at inde
x 0 to specified code page.
at System.Text.EncoderExceptionFallbackBuffer.Fallback(Char charUnknown, Int32 index)
at System.Text.EncoderFallbackBuffer.InternalFallback(Char ch, Char*& chars)
at System.Text.ASCIIEncoding.GetBytes(Char* chars, Int32 charCount, Byte* bytes, Int32
byteCount, EncoderNLS encoder)
at System.Text.ASCIIEncoding.GetBytes(String chars, Int32 charIndex, Int32 charCount, B
yte[] bytes, Int32 byteIndex)
at Sample.Main()

*** THE CODE EXAMPLE TERMINATES HERE AS INTENDED. ***

*/
// This example demonstrates the EncoderExceptionFallback class.

using System;
using System.Text;

class Sample 
{
    public static void Main() 
    {

// Create an encoding, which is equivalent to calling the 
// ASCIIEncoding class constructor. 
// The EncoderExceptionFallback parameter causes an exception to
// be thrown when a character cannot be encoded. 
// A decoder exception fallback is also specified, but it is not 
// used because this example terminates during the encoding operation.  

    Encoding ae = Encoding.GetEncoding(
                  "us-ascii",
                  new EncoderExceptionFallback(), 
                  new DecoderExceptionFallback());

// The input string consists of the Unicode characters LEFT POINTING 
// DOUBLE ANGLE QUOTATION MARK (U+00AB), 'X' (U+0058), and RIGHT POINTING 
// DOUBLE ANGLE QUOTATION MARK (U+00BB). 
// The encoding can only encode characters in the US-ASCII range of U+0000 
// through U+007F. Consequently, the characters bracketing the 'X' character
// cause an exception.
    string inputString = "\u00abX\u00bb";

    string twoNewLines = "\n\n";
    byte[] encodedBytes = new byte[ae.GetMaxByteCount(inputString.Length)];
    int numberOfEncodedBytes = 0;

// --------------------------------------------------------------------------
    Console.Clear();

// Display the name of the encoding.
    Console.WriteLine("The name of the encoding is \"{0}\".\n", ae.WebName);

// Display the input string in text.
    Console.WriteLine("Input string ({0} characters): \"{1}\"", 
                       inputString.Length, inputString);

// Display the input string in hexadecimal.
    Console.Write("Input string in hexadecimal: ");
    foreach (char c in inputString.ToCharArray()) {
        Console.Write("0x{0:X2} ", (int)c);}
    Console.Write(twoNewLines);

// --------------------------------------------------------------------------
// Attempt to encode the input string. However, an exception is thrown before
// the input string can be encoded.

    Console.WriteLine("Encode the input string...");

// The code example terminates during the call to the GetBytes() method.
    try {
        numberOfEncodedBytes = ae.GetBytes(inputString, 0, inputString.Length, 
                                           encodedBytes, 0);
        }
    catch (EncoderFallbackException e)
        {
        Console.WriteLine(e);
        Console.WriteLine("\n*** THE CODE EXAMPLE TERMINATES HERE AS INTENDED. ***");
        return;
        }

// This statement is never executed.
    Console.WriteLine("This statement is never executed.");
    }
}
/*
This code example produces the following results:

The name of the encoding is "us-ascii".

Input string (3 characters): "«X»"
Input string in hexadecimal: 0xAB 0x58 0xBB

Encode the input string...
System.Text.EncoderFallbackException: Unable to translate Unicode character \u00AB at inde
x 0 to specified code page.
   at System.Text.EncoderExceptionFallbackBuffer.Fallback(Char charUnknown, Int32 index)
   at System.Text.EncoderFallbackBuffer.InternalFallback(Char ch, Char*& chars)
   at System.Text.ASCIIEncoding.GetBytes(Char* chars, Int32 charCount, Byte* bytes, Int32
byteCount, EncoderNLS encoder)
   at System.Text.ASCIIEncoding.GetBytes(String chars, Int32 charIndex, Int32 charCount, B
yte[] bytes, Int32 byteIndex)
   at Sample.Main()

*** THE CODE EXAMPLE TERMINATES HERE AS INTENDED. ***

*/
' This example demonstrates the EncoderExceptionFallback class.
Imports System.Text

Class Sample
    Public Shared Sub Main() 
        
        ' Create an encoding, which is equivalent to calling the 
        ' ASCIIEncoding class constructor. 
        ' The EncoderExceptionFallback parameter causes an exception to
        ' be thrown when a character cannot be encoded. 
        ' A decoder exception fallback is also specified, but it is not 
        ' used because this example terminates during the encoding operation.  


        Dim eef As New EncoderExceptionFallback()
        Dim def As New DecoderExceptionFallback()
        Dim ae As Encoding = Encoding.GetEncoding("us-ascii", eef, def)
        
        ' The input string consists of the Unicode characters LEFT POINTING 
        ' DOUBLE ANGLE QUOTATION MARK (U+00AB), 'X' (U+0058), and RIGHT POINTING 
        ' DOUBLE ANGLE QUOTATION MARK (U+00BB). 
        ' The encoding can only encode characters in the US-ASCII range of U+0000 
        ' through U+007F. Consequently, the characters bracketing the 'X' character
        ' cause an exception.

        Dim inputString As String = "«X»"
        
        Dim twoNewLines As String = vbCrLf & vbCrLf
        Dim numberOfEncodedBytes As Integer = ae.GetMaxByteCount(inputString.Length)
        ' Counteract the compiler adding an extra element.
        Dim encodedBytes(numberOfEncodedBytes - 1) As Byte
        
        ' --------------------------------------------------------------------------
        Console.Clear()
        
        ' Display the name of the encoding.
        Console.WriteLine("The name of the encoding is ""{0}""." & vbCrLf, ae.WebName)
        
        ' Display the input string in text.
        Console.WriteLine("Input string ({0} characters): ""{1}""", _
                           inputString.Length, inputString)
        
        ' Display the input string in hexadecimal. 
        ' Each element is converted to an integer with Convert.ToInt32.
        Console.Write("Input string in hexadecimal: ")
        Dim c As Char
        For Each c In  inputString.ToCharArray()
            Console.Write("0x{0:X2} ", Convert.ToInt32(c))
        Next c
        Console.Write(twoNewLines)
        
        ' --------------------------------------------------------------------------
        ' Attempt to encode the input string. However, an exception is thrown before
        ' the input string can be encoded.
        Console.WriteLine("Encode the input string...")
        
        ' The code example terminates during the call to the GetBytes() method.
        Try
            numberOfEncodedBytes = ae.GetBytes(inputString, 0, inputString.Length, _
                                               encodedBytes, 0)
        Catch e As EncoderFallbackException
            Console.WriteLine(e)
            Console.WriteLine(vbCrLf & _
                              "*** THE CODE EXAMPLE TERMINATES HERE AS INTENDED. ***")
            Return
        End Try
        
        ' This statement is never executed.
        Console.WriteLine("This statement is never executed.")
    
    End Sub
End Class
'
'This code example produces the following results:
'
'The name of the encoding is "us-ascii".
'
'Input string (3 characters): "X"
'Input string in hexadecimal: 0xAB 0x58 0xBB
'
'Encode the input string...
'System.Text.EncoderFallbackException: Unable to translate Unicode character \u00AB at inde
'x 0 to specified code page.
'   at System.Text.EncoderExceptionFallbackBuffer.Fallback(Char charUnknown, Int32 index)
'   at System.Text.EncoderFallbackBuffer.InternalFallback(Char ch, Char*& chars)
'   at System.Text.ASCIIEncoding.GetBytes(Char* chars, Int32 charCount, Byte* bytes, Int32
'byteCount, EncoderNLS encoder)
'   at System.Text.ASCIIEncoding.GetBytes(String chars, Int32 charIndex, Int32 charCount, B
'yte[] bytes, Int32 byteIndex)
'   at Sample.Main()
'
'*** THE CODE EXAMPLE TERMINATES HERE AS INTENDED. ***
'

Costruttori

EncoderFallbackException()

Inizializza una nuova istanza della classe EncoderFallbackException.Initializes a new instance of the EncoderFallbackException class.

EncoderFallbackException(String)

Inizializza una nuova istanza della classe EncoderFallbackException.Initializes a new instance of the EncoderFallbackException class. Il messaggio di errore è specificato da un parametro.A parameter specifies the error message.

EncoderFallbackException(String, Exception)

Inizializza una nuova istanza della classe EncoderFallbackException.Initializes a new instance of the EncoderFallbackException class. I parametri specificano il messaggio di errore e l'eccezione interna che ne costituisce la causa.Parameters specify the error message and the inner exception that is the cause of this exception.

Proprietà

CharUnknown

Ottiene il carattere di input che ha causato l'eccezione.Gets the input character that caused the exception.

CharUnknownHigh

Ottiene il carattere del surrogato alto nella coppia di surrogati che ha causato l'eccezione.Gets the high component character of the surrogate pair that caused the exception.

CharUnknownLow

Ottiene il carattere del surrogato basso nella coppia di surrogati che ha causato l'eccezione.Gets the low component character of the surrogate pair that caused the exception.

Data

Ottiene una raccolta di coppie chiave/valore che forniscono informazioni definite dall'utente aggiuntive sull'eccezione.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Ereditato da Exception)
HelpLink

Ottiene o imposta un collegamento al file della Guida associato all'eccezione.Gets or sets a link to the help file associated with this exception.

(Ereditato da Exception)
HResult

Ottiene o imposta HRESULT, un valore numerico codificato che viene assegnato a un'eccezione specifica.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Ereditato da Exception)
Index

Ottiene la posizione di indice nel buffer di input del carattere che ha causato l'eccezione.Gets the index position in the input buffer of the character that caused the exception.

InnerException

Ottiene l'istanza di Exception che ha causato l'eccezione corrente.Gets the Exception instance that caused the current exception.

(Ereditato da Exception)
Message

Ottiene il messaggio di errore e il nome del parametro o, se non è stato impostato alcun nome di parametro, soltanto il messaggio di errore.Gets the error message and the parameter name, or only the error message if no parameter name is set.

(Ereditato da ArgumentException)
ParamName

Ottiene il nome del parametro che ha causato questa eccezione.Gets the name of the parameter that causes this exception.

(Ereditato da ArgumentException)
Source

Ottiene o imposta il nome dell'oggetto o dell'applicazione che ha generato l'errore.Gets or sets the name of the application or the object that causes the error.

(Ereditato da Exception)
StackTrace

Ottiene una rappresentazione di stringa dei frame immediati nello stack di chiamate.Gets a string representation of the immediate frames on the call stack.

(Ereditato da Exception)
TargetSite

Ottiene il metodo che genera l'eccezione corrente.Gets the method that throws the current exception.

(Ereditato da Exception)

Metodi

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Ereditato da Object)
GetBaseException()

Quando ne viene eseguito l'override in una classe derivata, restituisce l'Exception che è la causa radice di una o più eccezioni successive.When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions.

(Ereditato da Exception)
GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Ereditato da Object)
GetObjectData(SerializationInfo, StreamingContext)

Imposta l'oggetto SerializationInfo con il nome del parametro e informazioni aggiuntive sull'eccezione.Sets the SerializationInfo object with the parameter name and additional exception information.

(Ereditato da ArgumentException)
GetType()

Ottiene il tipo di runtime dell'istanza corrente.Gets the runtime type of the current instance.

(Ereditato da Exception)
IsUnknownSurrogate()

Indica se l'input che ha causato l'eccezione è una coppia di surrogati.Indicates whether the input that caused the exception is a surrogate pair.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
ToString()

Crea e restituisce una rappresentazione di stringa dell'eccezione corrente.Creates and returns a string representation of the current exception.

(Ereditato da Exception)

Eventi

SerializeObjectState

Si verifica quando un'eccezione viene serializzata per creare un oggetto di stato eccezione contenente i dati serializzati relativi all'eccezione.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Ereditato da Exception)

Si applica a

Vedi anche