반응형 EffectiveC#13 [Effective C#] Item47 사용자 지정 예외 클래스를 완벽하게 작성하라 예외 객체에 포함된 기존 오류 관련 정보를 훼손하지 않으면서도 저수준의 에러 내용을 응용 프로그램 관점으로 재해석한 정보를 예외 객체에 포함 시키고 싶을때 사용자 지정 예외 클래스를 사용할 수 있다. 예외 클래스의 작성 이유 catch 문을 사용하여 예외를 다루는 코드를 작성할 개발자가 각각을 구분해서 서로 다른 작업을 수행할 수 있도록 하기 위함이다. 예외클래스 만들기 1. 개별 예외 클래스의 고유한 책임을 명확하게 규정해야한다. 2. 모든 예외 클래스의 일므은 Exception으로 끝나야 한다. 3. System.Exception 클래스나 혹은 더 적절한 클래스를 상속해서 구현해야 한다. 새로운 예외 클래스를 작성할 때는 반드시 4개의 생성자를 작성해야한다. // 기본 생성자 public Except.. 2023. 6. 12. [Effectvie C#] Item 46 리소스 정리를 위해 using과 try/finally를 활용하라 관리되지 않은 시스템 리소스를 사용하는 타입은 IDisposable 인터페이스의 Dispose() 메서드를 이용하여 일시적으로 리소스를 해제해야한다. 사용자 입장에서 Dispose() 메서드가 항상 호출되도록 코드를 작성하기 위한 최선의 방법은 using문이나 try/finally 블록을 활용하는 것이다. using 문 사용하기 다음과 같은 코드를 작성했다고 해보자. public void ExecuteCommand(string connString, string commandString) { SqlConnection myConnection = new SqlConnection(connString); var mySqlCommand = new SqlCommand(commandString, myConnection.. 2023. 6. 12. [Effectvie C#] Item 45 메서드가 실패했음을 알리기 위해서 예외를 이용하라 반환코드 반환코드의 경우 메서드의 원형에 영향을 미친다. 계산의 결과를 나타내는 용도로 사용되므로 오류가 발생했다는 사실 이외의 추가적인 정보를 전달하기 어렵다. 메서드 호출자에 의해서 처리된다. 예외 예외를 이용하는 방식은 클래스 타입이므로 개발자가 자신만의 예외 타입을 파생시킬 수 있으며 오류에 대한 추가적인 정보를 전달할 수 있다. 콜 스택을 통해서 적절한 catsh문이 구성된 위치까지 전파된다. 적절한 catch문이 포맣되어 있지 않다면 응용프로그램이 정료되니 예외는 쉽게 무시하기 어렵다. 사전에 예외 검사하기 예외를 처리하는 작업은 일반적인 메서드 호출보다 시간이 많이 걸린다. 특정 작업을 수행하기 전에 실패할 가능성이 있는지 확인하는 편이 좋다. //이런 방법은 사용하지 말라. DoesWork.. 2023. 5. 23. [Effective C#] Item 44 바인딩 된 변수는 수정하지 말라 다음의 예는 클로저에서 캡처된 변수를 수정했을 때의 상황을 보여주기 위한 예이다. var index = 0; Func sequence = () => Utilities.Generate(30, () => index++); index = 20; foreach(int n in sequence()) WriteLine(n); WriteLine("Done"); index = 100; foreach(var n in sequence()) WriteLine(n); 위의 코드를 실행하면 20부터 50까지를 출력한 후, 100부터 130까지를 출력한다. C# 컴파일러는 쿼리 표현식을 실행 코드로 변활할 때 다양한 작업을 수행한다. 사용된 표현식이 어떤 형태인지에 따라 생성 방법이 다르다. 예시A (인스턴스 변수 접근 X, 지.. 2023. 5. 23. 이전 1 2 3 4 다음 반응형