Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A kivétel egy olyan hibaállapot jelzése, amely egy program végrehajtása közben következik be. Megadhatja a hibakeresőnek, hogy mely kivételeket vagy kivételkészleteket kell megszakítania, és hogy melyik időpontban szeretné megszakítani a hibakeresőt (azaz szüneteltetni a hibakeresőben). Amikor a hibakereső megszakad, megmutatja, hogy hol történt a kivétel. Kivételeket is hozzáadhat vagy törölhet. A Visual Studióban megnyitott megoldással a Windows > kivételbeállítások hibakeresésével > nyissa meg a Kivételbeállítások ablakot.
Adja meg a legfontosabb kivételekre reagáló kezelőket. Ha tudnia kell, hogyan adhat hozzá kezelőket a kivételekhez, olvassa el a hibák kijavítása című témakört jobb C#-kód megírásával. Azt is megtudhatja, hogyan konfigurálhatja úgy a hibakeresőt, hogy bizonyos kivételek esetén mindig megszakítsa a végrehajtást.
Kivétel esetén a hibakereső kivételüzenetet ír a Kimenet ablakba. Az alábbi esetekben megszakíthatja a végrehajtást, ha:
- A rendszer kivételt jelez, amelyet nem kezelnek.
- A hibakereső úgy van konfigurálva, hogy megszakítsa a végrehajtást a kezelő meghívása előtt.
- Beállította a Just My Code-ot, és a hibakereső úgy van konfigurálva, hogy megszakítsa a felhasználói kódban nem kezelt kivételeket.
Megjegyzés:
ASP.NET rendelkezik egy legfelső szintű kivételkezelővel, amely egy böngészőben jeleníti meg a hibaoldalakat. Csak akkor szakítja meg a végrehajtást, ha a Just My Code be van kapcsolva. Például lásd lent: Hogyan utasítsuk a hibakeresőt, hogy folytassa a felhasználó által nem kezelt kivételek esetén.
Megjegyzés:
Egy Visual Basic-alkalmazásban a hibakereső kivételként kezeli az összes hibát, még akkor is, ha On Error típusú hibakezelőket használ.
Mondja meg a hibakeresőnek, hogy törjön meg kivétel esetén
A hibakereső megszakíthatja a végrehajtást abban a pillanatban, amikor kivételt ad ki, ezért a kivételt a kezelő meghívása előtt megvizsgálhatja.
A Kivételbeállítások ablakban (Windows > kivételbeállítások hibakeresése>) bontsa ki a csomópontot egy kivételkategóriához, például a Common Language Runtime Exceptionshez. Ezután jelölje be az adott kategórián belüli kivétel (például System.AccessViolationException) jelölőnégyzetét. A kivételek teljes kategóriáját is kiválaszthatja.
Jótanács
Bizonyos kivételeket a Kivételbeállítások eszköztár Keresés ablakával, vagy a kereséssel szűrhet adott névterekre (például System.IO).
Ha kivételt választ a Kivétel beállításai ablakban, a hibakereső végrehajtása mindenhol megszakad, ahol a kivétel ki van dobva, függetlenül attól, hogy a kivételt kezelik-e. Most a kivételt első esélykivételnek nevezzük. Íme például néhány forgatókönyv:
A következő C#-konzolalkalmazásban a Main metódus egy AccessViolationException metódust dob egy
try/catchblokkba.static void Main(string[] args) { try { throw new AccessViolationException(); Console.WriteLine("here"); } catch (Exception e) { Console.WriteLine("caught exception"); } Console.WriteLine("goodbye"); }Ha az AccessViolationException be van jelölve a kivételbeállításokban, a végrehajtás megszakad a
throwsorban, amikor a kódot a hibakeresőben futtatja. Ezután folytathatja a végrehajtást. A konzolnak mindkét sort meg kell jelenítenie:caught exception goodbyede nem jeleníti meg a
herevonalat.A C#-konzolalkalmazások egy két metódust tartalmazó osztálytárra hivatkoznak. Az egyik metódus kivételt vet ki, és kezeli azt, míg egy második metódus ugyanazt a kivételt veti ki, de nem kezeli.
public class Class1 { public void ThrowHandledException() { try { throw new AccessViolationException(); } catch (AccessViolationException ave) { Console.WriteLine("caught exception" + ave.Message); } } public void ThrowUnhandledException() { throw new AccessViolationException(); } }A konzolalkalmazás Main() metódusa a következő:
static void Main(string[] args) { Class1 class1 = new Class1(); class1.ThrowHandledException(); class1.ThrowUnhandledException(); }Ha az AccessViolationException be van jelölve a Kivételbeállítások területen, a végrehajtás a
throwés a ThrowUnhandledException() sorban is megszakad, amikor a kódot a hibakeresőben futtatja.
A kivételbeállítások alapértelmezett értékre való visszaállításához válassza a Lista visszaállítása az alapértelmezett beállítások gombra:
Mondja meg a hibakeresőnek, hogy folytassa a felhasználó által nem kezelt kivételeket
Ha a .NET- vagy JavaScript-kódot a Just My Code használatával hibakeresi, beállíthatja a hibakeresőt úgy, hogy ne álljon meg a felhasználói kódban nem kezelt, de máshol kezelt kivételeknél.
A Kivételbeállítások ablakban nyissa meg a helyi menüt úgy, hogy a jobb gombbal egy oszlopcímkére kattint, majd válassza az Oszlopok > további műveletek megjelenítése lehetőséget. (Ha kikapcsolta a Just My Code funkciót, akkor ez a parancs nem jelenik meg.) Megjelenik egy harmadik , További műveletek nevű oszlop.
Az oszlop felhasználói kódjában nem kezelt Continue (Folytatás ) lehetőséget megjelenítő kivétel esetén a hibakereső akkor is folytatódik, ha a kivételt nem a felhasználói kód kezeli, hanem külsőleg kezeli.
Egy adott kivétel beállításának módosításához válassza ki a kivételt, kattintson a jobb gombbal a helyi menü megjelenítéséhez, és válassza a Folytatás, ha nincs kezelve a felhasználói kódban. A kivételek teljes kategóriájának beállítását is módosíthatja, például a teljes közös nyelvi futtatókörnyezeti kivételt).
Például ASP.NET webalkalmazások úgy kezelik a kivételeket, hogy HTTP 500 állapotkóddá konvertálják őket (kivételkezelés ASP.NET Webes API-ban), ami nem feltétlenül segít a kivétel forrásának meghatározásában. Az alábbi példában a felhasználói kód egy hívást String.Format() indít, amely egy FormatException. Végrehajtási szünetek az alábbiak szerint:
Kivételek hozzáadása és törlése
Kivételeket adhat hozzá és törölhet. Ha törölni szeretne egy kivételtípust egy kategóriából, jelölje ki a kivételt, és válassza a Kivétel beállításai eszköztár lista gombjáról (mínuszjel) a kijelölt kivétel törlése lehetőséget. Vagy kattintson a jobb gombbal a kivételre, és válassza a Törlés lehetőséget a helyi menüből. A kivétel törlése ugyanolyan hatással van, mint a kivétel nem ellenőrzötté tétele, ami azt eredményezi, hogy a hibakereső nem fog megszakadni, amikor a kivételt dobják.
Kivétel hozzáadása:
A Kivétel beállításai ablakban válassza ki a kivételkategóriák egyikét (például a Common Language Runtime-t).
Válassza az Hozzon létre kivételt a kiválasztott kategóriához gombot (a pluszjel).
Írja be a kivétel nevét (például System.UriTemplateMatchException).
A kivételt a rendszer hozzáadja a listához (betűrendben), és automatikusan bejelöli.
Ha kivételt szeretne hozzáadni a GPU memóriahozzáférés-kivételekhez, a JavaScript futtatókörnyezeti kivételekhez vagy a Win32 Kivételek kategóriához, adja meg a hibakódot és a leírást.
Jótanács
Ellenőrizze a helyesírását! A Kivétel beállításai ablak nem ellenőrzi a hozzáadott kivétel meglétét. Tehát ha beírja a Sytem.UriTemplateMatchException kifejezést, akkor a kivételhez kapcsolódó bejegyzés jelenik meg (és nem a System.UriTemplateMatchException esetében).
A kivételbeállítások megmaradnak a megoldás .suo fájljában, ezért egy adott megoldásra vonatkoznak. A különböző megoldásokban nem használhatja fel az adott kivételbeállításokat. Most csak a hozzáadott kivételek maradnak meg; A törölt kivételek nem. Hozzáadhat egy kivételt, bezárhatja és újra megnyithatja a megoldást, és a kivétel továbbra is ott lesz. Ha azonban töröl egy kivételt, és bezárja/újra megnyitja a megoldást, a kivétel újra megjelenik.
A Kivételbeállítások ablak a C# általános kivételtípusokat támogatja, a Visual Basicben azonban nem. Az olyan kivételek megszakításához, mint a MyNamespace.GenericException<T>, hozzá kell adnia a kivételt MyNamespace.GenericException`1 formában. Vagyis ha a következő kódhoz hasonló kivételt hozott létre:
public class GenericException<T> : Exception
{
public GenericException() : base("This is a generic exception.")
{
}
}
A kivételt hozzáadhatja a kivétel beállításaihoz az előző eljárással:
Feltételek hozzáadása kivételhez
A Kivétel beállításai ablakban feltételeket állíthat be a kivételekhez. A jelenleg támogatott feltételek közé tartoznak a kivételbe felvenni vagy kizárni kívánt modulnevek. A modulnevek feltételként való beállításával dönthet úgy, hogy csak bizonyos kódmodulokon szakítja meg a kivételt. Dönthet úgy is, hogy elkerüli az egyes modulok megszakítását.
Megjegyzés:
A kivétel feltételeinek hozzáadása a Visual Studio 2017-től támogatott.
Feltételes kivételek hozzáadása:
Válassza a Kivétel beállításai ablakban a Feltételek szerkesztése gombot, vagy kattintson a jobb gombbal a kivételre, és válassza a Feltételek szerkesztése parancsot.
Ha további szükséges feltételeket szeretne hozzáadni a kivételhez, válassza a Feltétel hozzáadása lehetőséget minden egyes új feltételhez. További feltételsorok jelennek meg.
Minden feltételsorhoz írja be a modul nevét, és módosítsa az összehasonlító operátorok listáját Egyenlőség vagy Nem egyenlő értékre. Egynél több modul megadásához helyettesítő karaktereket (\*) is megadhat a névben.
Ha törölnie kell egy feltételt, válassza az X elemet a feltételsor végén.