- Dynamic Sidebar mit window.COURSES_MANIFEST für 13 Kurse (216 Kapitel) - Kurswechsler Dropdown mit Direktnavigation - Fortschrittsanzeige mit Solved-Checkmarks (✓) aus localStorage - Responsive Off-Canvas Drawer mit Floating Action Button (☰ Kapitel) & Backdrop auf Mobile/Tablets - Web-IDE Topbar Drawer-Button (☰ Kapitel) für unterbrechungsfreien Vollbild-Editor - Saubere Bereinigung redundanter statischer Legacy-Sidebars |
||
|---|---|---|
| .. | ||
| Aufgabe.cs | ||
| index.html | ||
| Musterloesung.cs | ||
| README.md | ||
| TestAufgabe.cs | ||
C# 12: Exception Handling & Ressourcenverwaltung (IDisposable) 🛡️
Willkommen zu Modul 12! In diesem Kapitel lernst du professionelle Fehlerbehandlung und deterministisches Ressourcenmanagement nach Enterprise-.NET-Standards.
💡 1. Das Wichtigste in Kürze
Eigene Domain Exceptions
Ausnahmen sollten fachliche Fehler ausdrücken und dem Aufrufer relevante Kontextdaten bereitstellen:
public class InsufficientFundsException : BankDomainException
{
public Guid AccountId { get; }
public decimal RequestedAmount { get; }
public decimal CurrentBalance { get; }
public InsufficientFundsException(Guid accountId, decimal requestedAmount, decimal currentBalance)
: base($"Konto {accountId} hat unzureichende Deckung ({currentBalance:C}). Gefordert: {requestedAmount:C}")
{
AccountId = accountId;
RequestedAmount = requestedAmount;
CurrentBalance = currentBalance;
}
}
Exception Filters (when)
Mit when entscheidest du im catch-Block anhand von Bedingungen, ob die Exception gefangen werden soll:
catch (InsufficientFundsException ex) when (ex.RequestedAmount > 10_000m)
{
// Greift nur bei Großtransaktionen
}
Das IDisposable Muster & using Declarations
Seit C# 8 reicht die schlanke Syntax using var resource = ..., die das Objekt am Ende des aktuellen Gültigkeitsbereichs automatisch entsorgt:
{
using var scope = new AuditTransactionScope("TX-1234");
// scope.Dispose() wird beim Verlassen dieses Blocks garantiert aufgerufen!
}
🎯 Teilziele in Aufgabe.cs
-
TODO 1: Exception-Klassenhierarchie
ErstelleBankDomainException,AccountNotFoundExceptionundInsufficientFundsException. -
TODO 2:
AuditTransactionScope : IDisposable
Implementiere dieIDisposable-Schnittstelle mit Statusfeld_disposedund werfeObjectDisposedException, wenn auf ein bereits freigegebenes Objekt zugegriffen wird. -
TODO 3:
BankAccountEntität
ImplementiereDeposit(decimal amount)undWithdraw(decimal amount)mit entsprechenden Exception-Prüfungen. -
TODO 4:
BankTransferService.TransferFunds
Implementiere atomare Überweisungen mitusing var scopeund Exception Handling.