Latest web development tutorials

C # 예외 처리

프로그램 실행시에 문제 이상. C #을 프로그램은 0으로 분할하려는 시도로, 실행시 발생하는 예외적 인 상황에 응답 예외입니다.

예외는 프로그램 제어 방식의 일부분에서 다른 일부분 전달이 제공된다. 보십시오, 캐치, 마지막으로하고던져 : 위의네 가지 핵심 단어를 기반으로 C # 예외처리.

  • 보십시오 try 블록은 코드 블록의 특정 예외 동작을 식별.하나 이상의 catch 블록 하였다.
  • 캐치 : 예외 처리기를 통해 예외 프로그램을 잡을 수있어.캐치 키워드는 비정상적인 캡처를 나타냅니다.
  • 마지막 : 마지막 블록에 관계없이 발생되는 예외가 실행 여부, 주어진 문장을 수행하는 데 사용됩니다.파일을 열 경우, 예를 들어, 여부에 관계없이의 예외 파일이 닫혀가 있어야합니다.
  • 던져 : 문제가 발생하면 프로그램이 예외가 발생합니다.던져를 완료하기 위해 키워드를 사용합니다.

문법

블록 이상이 가정, 키워드를 사용하는 방법을 시도하고 예외를 잡을 수있어. 다음 구문과 같이 코드 catch 블록을 사용 시도 / 잡기, 코드를 보호 / 시도 :

시험
{
   예외를 발생} // 문
캐치 (ExceptionName의 E1)
{
   // 오류 처리 코드}
캐치 (ExceptionName의 E2)
{
   // 오류 처리 코드}
캐치 (ExceptionName EN)
{
   // 오류 처리 코드}
최종적으로
{
   // 문 실행}

당신은 try 블록이 다른 상황에서 여러 예외를 생성 방지하기 위해, 예외의 다른 유형을 잡기 위해 여러 catch 문을 나열 할 수 있습니다.

C #에서 예외 클래스

C # 1 예외 클래스 표현의 사용이다. C #에서 예외 클래스는 대부분 직접 또는 간접적으로System.Exception 클래스에서 파생.System.ApplicationException 및System.SystemException클래스는 예외 클래스 System.Exception 클래스를 파생됩니다.

응용 프로그램 예외에 의해 생성 된System.ApplicationException 클래스를 지원합니다.그래서 프로그래머 정의 예외는이 클래스에서 파생되어야한다.

System.SystemException 클래스는 예외에 대한 모든 사전 정의 된 시스템의 기본 클래스입니다.

다음 표는 몇 가지 미리 정의 된 Sytem.SystemException 클래스 예외 클래스에서 파생 나열 :

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

예외 처리

C #을 시도 캐치 블록은 구조적 예외 처리 프로그램의 형태로 제공된다. 이들 블록을 사용하여, 상기 코어 프로그램 명령문 및 오류 처리 문이 분리된다.

이 블록을 처리 오류시도, 캐치를사용하는것입니다그리고마지막으로달성하기 위해 키워드. 여기에 제로 실시 예에 의해 분할 된 경우에 슬로우 예외입니다 :

시스템을 이용하여;
네임 스페이스 ErrorHandlingApplication
{
    클래스 DivNumbers
    {
        INT 결과;
        DivNumbers ()
        {
            결과 = 0;
        }
        공공 무효 부문 (INT NUM1, INT NUM2)
        {
            시험
            {
                결과 = NUM1 / NUM2;
            }
            캐치 (DivideByZeroException인지 전자)
            {
                Console.WriteLine ( "예외 발견 : {0}", 전자);
            }
            최종적으로
            {
                Console.WriteLine ( "결과 : {0}", 결과);
            }

        }
        정적 무효 메인 (문자열 []에 인수)
        {
            DivNumbers)는 (= 새로운 DivNumbers을 거라고;
            d.division (25, 0);
            Console.ReadKey ();
        }
    }
}

상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를

예외 발견 : System.DivideByZeroException은 : 0으로 나눌 시도했습니다. 
에 ...
결과 : 0

사용자 정의 예외를 작성

당신은 또한 자신의 예외를 정의 할 수 있습니다. 사용자 정의 예외클래스는있는 ApplicationException 클래스에서 파생됩니다.다음의 예는이 점을 보여

시스템을 이용하여;
네임 스페이스 UserDefinedException
{
   클래스 TestTemperature
   {
      정적 무효 메인 (문자열 []에 인수)
      {
         온도 온도 = 새로운 온도 ();
         시험
         {
            temp.showTemp ();
         }
         캐치 (TempIsZeroException 전자)
         {
            Console.WriteLine ( "TempIsZeroException : {0}", e.Message);
         }
         Console.ReadKey ();
      }
   }
}
공용 클래스 TempIsZeroException :있는 ApplicationException
{
   공공 TempIsZeroException (문자열 메시지) :베이스 (메시지)
   {
   }
}
공용 클래스 온도
{
   INT 온도 = 0;
   공공 무효 showTemp ()
   {
      경우 (온도 == 0)
      {
         (() "제로 온도 발견"새로운 TempIsZeroException)를 던져;
      }
      그렇지 않으면
      {
         Console.WriteLine ( "온도 : {0}", 온도);
      }
   }
}

상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를

TempIsZeroException : 제로 온도 발견

의 Throwable

예외가 직접 또는 간접적으로System.Exception 클래스에서 파생 된 경우 객체를 던질 수 있습니다.다음과 같이 현재 개체를 던져 캐치 블록 throw 문을 사용할 수 있습니다 :

캐치 (예외 전자)
{
   ...
   던져 전자
}