A C# nyelv kivételkezelő funkciója segít kezelni bármilyen váratlan vagy szokatlan helyzetet, amely a program futása közben történik. A kivételkezelés a try, catch és finally kulcsszavakat használja bizonyos műveletek meghibásodásának kezelésére, és bár ezek a műveletek meghibásodási potenciállal rendelkeznek, megpróbálhatod, ha biztos vagy benne, hogy ezt meg kell tenned, és utána szeretnéd tisztítani az erőforrásokat. Közös nyelvi futás (CLR), . A NET Framework vagy bármely harmadik féltől származó könyvtár vagy alkalmazáskód kivételeket generálhat. A kivételeket a dobás kulcsszó segítségével hozza létre. Sok esetben kivételeket nem egy közvetlenül kód által megidézett metódus emel, hanem egy másik, a hívás verem mélyebb részén lévő módszerrel. Ebben az esetben a CLR kibővíti a veremet, hogy megnézze, van-e olyan metódus, amely tartalmazza-e egy catch blockot az adott kivételtípushoz, és ha talál ilyen metódust, végrehajtja az első ilyen catch blockot. Ha a hívás halomban sehol sem található megfelelő catch block, a folyamat megszűnik, és üzenetet jelenít meg a felhasználónak. Ebben a példában egy módszert használnak annak kimutatására, hogy van-e olyan helyzet, ahol a nullával osztjuk; Ha van, akkor a hibát megkapják. Ha nincs kivételkezelés, a program megszűnik, és "DivideByZeroException Not Handled" hibát okoz.- class ExceptionTest
- {
- static double SafeDivision(double x, double y)
- {
- if (y == 0)
- throw new System.DivideByZeroException();
- return x / y;
- }
- static void Main()
- {
- // Input for test purposes. Change the values to see
- // exception handling behavior.
- double a = 98, b = 0;
- double result = 0;
- try
- {
- result = SafeDivision(a, b);
- Console.WriteLine("{0} divided by {1} = {2}", a, b, result);
- }
- catch (DivideByZeroException e)
- {
- Console.WriteLine("Attempted divide by zero.");
- }
- }
- }
Kód másolása
|