|
|
Paskelbta 2015-04-12 22:22:03
|
|
|

C# kalbos išimčių tvarkymo funkcija padeda susidoroti su bet kokiomis netikėtomis ar neįprastomis situacijomis, atsirandančiomis veikiant programai. Išimčių tvarkymas naudoja raktinius žodžius "try", "catch" ir "finally", kad išbandytumėte tam tikras operacijas, kad išspręstumėte gedimus, ir nors šios operacijos gali nepavykti, galite pabandyti tai padaryti, jei esate tikri, kad jums reikia tai padaryti ir norite išvalyti išteklius vėliau. Bendrosios kalbos vykdymo laikas (CLR), . NET Framework arba bet kuri trečiosios šalies biblioteka ar programos kodas gali generuoti išimtis. Išimtys sukuriamos naudojant raktinį žodį mesti. Daugeliu atvejų išimtys gali būti iškeltos ne metodu, iškviečiamu tiesiogiai kodu, o kitu metodu toliau skambučių krūvoje. Tokiu atveju CLR išplečia rietuvę, kad pamatytų, ar yra metodas, kuriame yra to konkretaus išimties tipo gaudymo blokas, ir jei randa tokį metodą, jis vykdo pirmąjį tokį rastą gaudymo bloką. Jei skambučių krūvoje nerandamas tinkamas gaudymo blokas, procesas nutraukiamas ir vartotojui rodomas pranešimas. Šiame pavyzdyje naudojamas metodas, skirtas nustatyti, ar yra situacija, kai jis padalijamas iš nulio; Jei yra, klaida užfiksuota. Jei nėra išimčių apdorojimo, ši programa nutrauks ir pateiks klaidą "DivideByZeroException Not Handled".- 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.");
- }
- }
- }
Kopijuoti kodą
|
Ankstesnis:C# nustato, ar eilutėje yra simbolisKitą:Nustatykite, ar svetainę sukūrė "Discuz" forumo programa
|