Defensive Programmierung
Teil des Abschnitts Logik & Ablauf der C#-Journey von Coddy. Lektion 34 von 66.
Defensive Programmierung ist eine Technik, die hilft, durch Nullreferenzen verursachte Fehler zu verhindern. Dabei werden Nullwerte überprüft, bevor versucht wird, Objekte zu verwenden.
Prüfe auf null, bevor du ein Objekt verwendest:
string name = GetNameFromSomewhere();
// Defensive Prüfung
if (name == null)
{
// Behandle den null-Fall
name = "Default Name";
}
// Jetzt ist es sicher, name zu verwenden
Console.WriteLine(name.ToUpper());Parameter in Methoden validieren:
public void ProcessOrder(Order order)
{
// Defensive Prüfung auf null-Parameter
if (order == null)
{
Console.WriteLine("Error: Order cannot be null");
return;
}
// Nun sicher, die Bestellung zu verarbeiten
Console.WriteLine("Processing order: " + order.Id);
}Verwende den Operator für bedingten Zugriff (?.) für übersichtlichere null-Prüfungen:
Customer customer = GetCustomerFromSomewhere();
// Anstatt:
// string city = null;
// if (customer != null && customer.Address != null)
// {
// city = customer.Address.City;
// }
// Verwende dies:
string city = customer?.Address?.City;Aufgabe
EinfachErstelle eine Methode namens ProcessUserData, die einen Zeichenkettenparameter userData akzeptiert. Die Methode sollte:
- Prüfen, ob
userDatanull ist – falls ja, "Error: User data is null" ausgeben und zurückkehren. - Prüfen, ob
userDataleer ist – falls ja, "Error: User data is empty" ausgeben und zurückkehren. - Wenn die Daten gültig sind, sie in Großbuchstaben umwandeln und "Processing: [UPPERCASE_DATA]" ausgeben.
Probier es selbst
using System;
class ProcessUserData
{
public static void processUserData(string userData)
{
// Hinweis: der String "null" sollte als tatsächlicher Nullwert behandelt werden
// Schreibe deinen Code hier
}
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Mehrdimensionale Arrays
Grundlagen 2D-Arrays2D-Arrays deklarieren und initialisierenAuf Elemente von 2D-Arrays zugreifenVerschachtelte Schleifen mit 2D-ArraysGezackte ArraysHäufige MatrixoperationenZusammenfassung – Mehrdimensionale Arrays4Techniken zur Ablaufsteuerung
Frühe RückgabenWächterklauselnSprunganweisungen (goto)Break und ContinueVerschachtelte Bedingungen abflachen7Logische Operatoren – Fortgeschritten
KurzschlussauswertungBedingte logische OperatorenOperatorrangfolgeRückblick – Erweiterte Operatoren2Fortgeschrittene Entscheidungslogik
Mehrere BedingungenKomplexe boolesche LogikVergleich: If vs. SwitchVerschachtelte Switch-AnweisungenRückblick – Fortgeschrittene Entscheidungen5Fehlerbehandlung mit Exceptions
Grundlagen von Try-CatchException-TypenMehrere Catch-BlöckeArbeiten mit DateienFinally-BlockUsing im Vergleich zu Try-FinallyBenutzerdefinierte ExceptionsZusammenfassung – Fehlerbehandlung3Schleifenverbesserungen
SchleifenleistungKomplexe IterationJeder SchleifentypSchleifen refaktorierenRückblick – Optimierte Schleifen6Behandlung von Nullwerten
Grundlagen von NullreferenzenNullable WerttypenMuster zur NullprüfungDefensive ProgrammierungZusammenfassung – NullsicherheitÜbe selbstständig: Online-C#-Compiler