C\#에서 try...catch 의 사용 과 흔 한 면접 문제 공유

머리말
C\#중 Try-Catch 문 구 는 모두 가 잘 알 고 있 지만 자세히 따 져 보면 할 말 이 많다.최근 에 정리 한 흔 한 면접 문 제 를 뒤 져 보 니 try..catch 에 대해 이상 하 게 처리 한 것 이 많 습 니 다.오늘 이 면접 문 제 를 보고 다시 공부 하 겠 습 니 다.
try.catch 문법
 try-catch 문 구 는 try 블록 뒤에 하나 이상 의 catch 자구 로 구성 되 어 있 으 며,이 자구 들 은 서로 다른 이상 처리 프로그램 을 만 듭 니 다.
이상 이 발생 하면 공용 언어 가 실 행 될 때(CLR)이 이상 을 처리 하 는 catch 문 구 를 찾 습 니 다.현재 실행 중인 방법 에 이러한 catch 블록 이 포함 되 어 있 지 않 으 면 CLR 은 현재 방법 을 호출 하 는 방법 을 보고 겹 쳐 서 스 택 을 사용 합 니 다.catch 블록 을 찾 지 못 하면 CLR 은 처리 되 지 않 은 이상 한 정 보 를 사용자 에 게 표시 하고 실행 을 중단 합 니 다.
try 블록 에는 이상 을 일 으 킬 수 있 는 보호 코드 가 포함 되 어 있 습 니 다.이 블록 은 이상 을 일 으 키 거나 성공 적 으로 완 성 될 때 까지 계속 실 행 됩 니 다.

class Program
 {
  static void Main(string[] args)
  {
   object o = null;
   try
   {
    //     null         NullReferenceException   
    int i = (int)o;
   }

   catch (NullReferenceException ex)
   //1.            catch            ,        。   ,                    。   ,          System.Exception        。
   //2.     try-catch                catch   。       catch         ,         catch   。              ,            。     catch                  ,        。
   //3. int i = (int)o;       NullReferenceException  ,    catch    
   //4.   catch (Exception ex)     ,         ,        。
   {
    Console.WriteLine(ex.Message);
   }
   catch (DivideByZeroException div)
   {
    Console.WriteLine(div.Message);
   }
   catch (Exception ex)
   {
    Console.WriteLine(ex.Message);
   }
   Console.Read();
  }
try-catch 의 기본 문법 은 위 에서 말 한 바 와 같이 try-catch 의 실행 순 서 는 try 블록의 코드 실행 에 이상 이 생기 면 catch 블록의 코드 를 실행 합 니 다.try 블록의 실행 에 오류 가 없 으 면 try 블록의 코드 를 실행 하고 catch 블록의 문장 을 실행 하지 않 습 니 다.
try-catch-finally:이상 이 있 든 없 든 finally 블록 에 있 는 코드 는 실 행 됩 니 다.finally 블록 은 자원 의 방출 등에 자주 사 용 됩 니 다.
try-catch 의 필기시험 문제
첫 번 째:값 형식의

static int GetResult()
  {
   int a = 1;
   int b = 2;
   int n = 1;
   try
   {
    int k = a / b;
    return n;
   }
   catch (Exception ex)
   {

    Console.WriteLine(ex.Message);
    throw;
   }
   finally//          finally    
   {
    n++;
   }
  }
아마 당신 은 이미 결 과 를 알 고 있 을 것 입 니 다.1,왜 요?우 리 는 역 컴 파일 된 코드 를 볼 수 있 으 니,너 는 왜 그런 지 알 게 될 것 이다.

두 번 째:인용 유형의

static Person GetResult()
  {
   int a = 1;
   int b = 2;
   Person p = new Person();
   p.Age = 1;
   try
   {
    int k = a / b;
    return p;
   }
   catch (Exception ex)
   {

    Console.WriteLine(ex.Message);
    throw;
   }
   finally//          finally    
   {
    p.Age++;
   }
  }
그럼 돌아 온 이 사람의 age 는 얼마 일 까요?역 컴 파일 결 과 를 먼저 봅 니 다:

결과:2
총결산
이 문 제 는 try-catch-finally 의 집행 순서 와 인용 유형 과 값 유형 입 니 다.여기 서 이 문 제 를 정리 하고 각 도 를 바 꾸 어 다시 공부 하 는 것 입 니 다.
자,이상 이 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기