Latest web development tutorials

C # Wyjątkiem manipulacja

Nieprawidłowości podczas problemów wykonywania programu. C # jest wyjątek w odpowiedzi na wyjątkowe okoliczności wynikających gdy program działa, takich jak próba dzielenia przez zero.

Wyjątkiem jest kontrola program jest przekazywana z jednej części do drugiej części drogi. C obchodzenie # wyjątek oparty na czterech kluczowych słówpowyżej:try, catch, finally iwyrzucić.

  • try: blok try identyfikuje konkretny wyjątkiem bloku kodu który ma być aktywowany.Obserwowani przez jednego lub więcej bloków połowów.
  • złapać: złapać program wyjątku pośrednictwem obsługi wyjątków.Hasło haczyk wskazuje nieprawidłową schwytania.
  • Wreszcie: w końcu bloku jest używany do wykonywania danego komunikatu, niezależnie od tego, czy jest wyjątek zostanie wykonany.Na przykład, jeśli użytkownik otworzy plik, niezależnie od tego, czy powinny istnieć plik Wyjątkiem jest zamknięty.
  • rzucić: Gdy pojawiają się problemy, program zgłasza wyjątek.Użyj słów kluczowych, aby zakończyć rzut.

gramatyka

Załóżmy blok nieprawidłowe, to metoda za pomocą słów kluczowych spróbować złapać wyjątek. Kod try / catch jest chroniony kod, wykorzystanie try / catch, jak pokazano w poniższej składni:

próbować
{
   } // Komunikat, który spowodował wyjątek
catch (ExceptionName e1)
{
   // Kod błędu obchodzenie}
catch (ExceptionName e2)
{
   // Kod błędu obchodzenie}
catch (ExceptionName PL)
{
   // Kod błędu obchodzenie}
wreszcie
{
   // instrukcja wykonywana}

Można wymienić wiele instrukcji catch złapać różne rodzaje wyjątków, aby zapobiec blok try generuje wiele wyjątków w różnych okolicznościach.

klas wyjątków w C #

C # Wyjątkiem jest wykorzystanie reprezentacji klasy. klas wyjątków w C # w większości bezpośrednio lub pośrednio pochodzi od klasySystem.Exception.System.ApplicationException iSystem.SystemExceptionklasy pochodzi wyjątku klasy Klasy System.Exception.

System.ApplicationException klasy wsparcie generowane przez wyjątek aplikacji.Więc wyjątki programista zdefiniowane powinny pochodzić z tej klasy.

KlasaSystem.SystemException wszystko predefiniowane klasy bazowej system wyjątków.

Poniższa tabela przedstawia niektóre pochodzą z klas wyjątków predefiniowanych klas Sytem.SystemException:

异常类描述
System.IO.IOException处理 I/O 错误。
System.IndexOutOfRangeException处理当方法指向超出范围的数组索引时生成的错误。
System.ArrayTypeMismatchException处理当数组类型不匹配时生成的错误。
System.NullReferenceException处理当依从一个空对象时生成的错误。
System.DivideByZeroException处理当除以零时生成的错误。
System.InvalidCastException处理在类型转换期间生成的错误。
System.OutOfMemoryException处理空闲内存不足生成的错误。
System.StackOverflowException处理栈溢出生成的错误。

Obsługa wyjątków

C #, aby spróbować i blok catch jest w formie zorganizowanego programu obsługi wyjątków. Korzystając z tych bloków, rdzeń oświadczenia i deklaracje programowe obsługi błędów rozdzielone.

obsługi tych bloków Błąd jest użycietry, catchiwreszciesłowa kluczowe do osiągnięcia. Oto wyjątek generowany, gdy podzielone przez zero przykładów:

using System;
nazw ErrorHandlingApplication
{
    DivNumbers klasy
    {
        int wynik;
        DivNumbers ()
        {
            wynik = 0;
        }
        public void Division (int num1, int num2)
        {
            próbować
            {
                wynik = num1 / num2;
            }
            catch (DivideByZeroException e)
            {
                Console.WriteLine ( "Wyjątek złowionych: {0}", e);
            }
            wreszcie
            {
                Console.WriteLine ( "Rezultat: {0}", wynik);
            }

        }
        static void Main (string [] args)
        {
            DivNumbers D = nowe DivNumbers ();
            d.division (25, 0);
            Console.ReadKey ();
        }
    }
}

Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:

Wyjątek złowionych: System.DivideByZeroException: Próba dzielenia przez zero. 
co ...
Wynik: 0

Tworzenie wyjątku zdefiniowane przez użytkownika

Można również zdefiniować własne wyjątki. Zdefiniowany przez użytkownika klasy wyjątek pochodzi z klasyApplicationException.Poniższy przykład ilustruje ten punkt:

using System;
nazw UserDefinedException
{
   Klasa TestTemperature
   {
      static void Main (string [] args)
      {
         temp Temperatura Temperatura = new ();
         próbować
         {
            temp.showTemp ();
         }
         catch (TempIsZeroException e)
         {
            Console.WriteLine ( "TempIsZeroException: {0}", e.Message);
         }
         Console.ReadKey ();
      }
   }
}
public class TempIsZeroException: ApplicationException
{
   TempIsZeroException publicznych (komunikat string): base (komunikat)
   {
   }
}
public class Temperatura
{
   int temperatura = 0;
   public void showTemp ()
   {
      if (temperatura == 0)
      {
         rzucać (nowy TempIsZeroException ( "Zero znaleziono Temperatura"));
      }
      więcej
      {
         Console.WriteLine ( "Temperatura: {0}", temperatura);
      }
   }
}

Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:

TempIsZeroException: znaleziono Zero Temperatura

Throwable

Jeśli wyjątek jest bezpośrednio lub pośrednio pochodzi z klasySystem.Exception można wyrzucić obiekt.Można użyć instrukcji catch throw bloku rzucać aktualny obiekt w następujący sposób:

Catch (Exception e)
{
   ...
   rzut e
}