Megosztás a következőn keresztül:


Felhasználó által definiált kivételek létrehozása honosított kivételüzenetekkel

Ebben a cikkben megtudhatja, hogyan hozhat létre felhasználó által definiált kivételeket, amelyek az alaposztálytól Exception öröklődnek helyi kivételüzenetekkel műholdas szerelvények használatával.

Egyéni kivételek létrehozása

A .NET számos különböző kivételt tartalmaz, amelyeket használhat. Bizonyos esetekben azonban, amikor egyik sem felel meg az igényeinek, létrehozhat saját egyéni kivételeket.

Tegyük fel, hogy olyan tulajdonságot StudentNotFoundException szeretne létrehozni, amely tartalmaz egy tulajdonságot StudentName . Egyéni kivétel létrehozásához kövesse az alábbi lépéseket:

  1. Hozzon létre egy szerializálható osztályt, amelytől Exceptionörököl. Az osztály nevének "Kivétel" végződésűnek kell lennie:

    [Serializable]
    public class StudentNotFoundException : Exception { }
    
    <Serializable>
    Public Class StudentNotFoundException
        Inherits Exception
    End Class
    
  2. Adja hozzá az alapértelmezett konstruktorokat:

    [Serializable]
    public class StudentNotFoundException : Exception
    {
        public StudentNotFoundException() { }
    
        public StudentNotFoundException(string message)
            : base(message) { }
    
        public StudentNotFoundException(string message, Exception inner)
            : base(message, inner) { }
    }
    
    <Serializable>
    Public Class StudentNotFoundException
        Inherits Exception
    
        Public Sub New()
        End Sub
    
        Public Sub New(message As String)
            MyBase.New(message)
        End Sub
    
        Public Sub New(message As String, inner As Exception)
            MyBase.New(message, inner)
        End Sub
    End Class
    
  3. Adjon meg további tulajdonságokat és konstruktorokat:

    [Serializable]
    public class StudentNotFoundException : Exception
    {
        public string StudentName { get; }
    
        public StudentNotFoundException() { }
    
        public StudentNotFoundException(string message)
            : base(message) { }
    
        public StudentNotFoundException(string message, Exception inner)
            : base(message, inner) { }
    
        public StudentNotFoundException(string message, string studentName)
            : this(message)
        {
            StudentName = studentName;
        }
    }
    
    <Serializable>
    Public Class StudentNotFoundException
        Inherits Exception
    
        Public ReadOnly Property StudentName As String
    
        Public Sub New()
        End Sub
    
        Public Sub New(message As String)
            MyBase.New(message)
        End Sub
    
        Public Sub New(message As String, inner As Exception)
            MyBase.New(message, inner)
        End Sub
    
        Public Sub New(message As String, studentName As String)
            Me.New(message)
            StudentName = studentName
        End Sub
    End Class
    

Honosított kivételüzenetek létrehozása

Létrehozott egy egyéni kivételt, és az alábbihoz hasonló kóddal bárhová eldobhatja:

throw new StudentNotFoundException("The student cannot be found.", "John");
Throw New StudentNotFoundException("The student cannot be found.", "John")

Az előző sorban az a probléma, hogy "The student cannot be found." ez csak egy állandó sztring. Honosított alkalmazásokban a felhasználói kultúrától függően különböző üzeneteket szeretne kapni. A műholdas szerelvények jó módszer erre. A műholdas szerelvény egy .dll, amely egy adott nyelv erőforrásait tartalmazza. Amikor adott erőforrásokat kér lefuttatáskor, a CLR a felhasználói kultúrától függően megkeresi ezt az erőforrást. Ha ehhez a kultúrához nem található műholdas szerelvény, a rendszer az alapértelmezett kultúra erőforrásait használja.

A honosított kivételüzenetek létrehozása:

  1. Hozzon létre egy Erőforrások nevű új mappát az erőforrásfájlok tárolásához.

  2. Adjon hozzá egy új erőforrásfájlt. Ehhez a Visual Studióban kattintson a jobb gombbal a Megoldáskezelő mappára, és válassza az Új elem>erőforrásfájl hozzáadása>parancsot. Nevezze el a ExceptionMessages.resx fájlt. Ez az alapértelmezett erőforrásfájl.

  3. Adjon hozzá egy név-érték párot a kivételüzenethez, ahogyan az alábbi képen látható:

    Add resources to the default culture

  4. Adjon hozzá egy új erőforrásfájlt a francia nyelvhez. Nevezze el ExceptionMessages.fr-FR.resx néven.

  5. Adjon hozzá ismét egy név-érték párot a kivételüzenethez, de francia értékkel:

    Add resources to the fr-FR culture

  6. A projekt létrehozása után a build kimeneti mappájának tartalmaznia kell az fr-FR mappát egy .dll fájllal, amely a műholdas szerelvény.

  7. A kivételt a következő kóddal dobhatja ki:

    var resourceManager = new ResourceManager("FULLY_QUALIFIED_NAME_OF_RESOURCE_FILE", Assembly.GetExecutingAssembly());
    throw new StudentNotFoundException(resourceManager.GetString("StudentNotFound"), "John");
    
    Dim resourceManager As New ResourceManager("FULLY_QUALIFIED_NAME_OF_RESOURCE_FILE", Assembly.GetExecutingAssembly())
    Throw New StudentNotFoundException(resourceManager.GetString("StudentNotFound"), "John")
    

    Feljegyzés

    Ha a projekt neve és TestProject az ExceptionMessages.resx erőforrásfájl a projekt Erőforrások mappájában található, az erőforrásfájl TestProject.Resources.ExceptionMessagesteljes neve .

Lásd még