2010-03-12 3 views
4

우리는 C# 언어를 사용하여 Windows 응용 프로그램을 개발하고 있습니다.우리는 어디서 어떻게 try do catch 블록을 처리 할 것인가?

우리의 Windows 응용 프로그램은 세 계층 (UI, 비즈니스 및 DataAccess 계층)으로 구성됩니다. 비즈니스 레이어에는 UI가 비즈니스 레이어 클래스와 통신하는 몇 가지 공용 (비즈니스) 메소드가 있습니다. 이러한 공용 메소드에는 필수 기능을 구현하는 몇 가지 개인 메소드가 있습니다. DataAcess 레이어에는 비즈니스 레이어 클래스에서 호출되는 몇 가지 메소드가 있습니다.

이 상황에서 어디에서 try-catch를해야합니까? a) 비즈니스 계층 공용 메서드 b) 사용 중 레이어 개인 메서드 c) DataAccess 레이어 메서드 d) 비즈니스 메서드가 호출되는 UI 메서드.

+0

http://stackoverflow.com/questions/tagged?tagnames=exception-handling%2bc%23 참조하십시오. –

답변

-2

변경해야 할 예외가 발생할 위험이있는 각 위치에서 try catch 블록을 사용해야합니다.

+1

-1 : "변경 가능"이란 의미가 무엇인지 모르겠지만 모든 예외를 절대적으로 감지하지 않아야합니다 . –

+0

mutable에 의해 나는 다음 코드에 영향을 미치지 않고 사용자에게 버블 링하지 않는다는 것을 의미했습니다. 다른 단어가 필요해. –

3

예외를 예상하고 특정 예외를 처리하려는 경우에만 예외를 처리해야합니다. 그렇지 않으면, IMO, 당신이 완벽한 스택 트레이스를 갖도록 레이어를 버블 링시키는 것이 낫습니다. 프리젠 테이션 단계에서도 예외적으로 기대하지 않는 한 오류를 일으킬 수 있습니다 (예 : 친숙한 오류 화면으로 이동).

예외가있는 일반적인 규칙은 입력을 검사하여 피하기 위해 입력을 확인하고 예상되는 항목을 예상하고 예외적으로 처리하고 오류를 던집니다. 오류 및 스택 추적은 좋은 것입니다. 그들은 당신에게 무언가가 잘못되어 있고 그것이 잘못되었다는 것을 알려줍니다. 주어진 레이어에 오류가있는 경우 무엇이 잘못되었는지 판단하는 것이 거의 불가능합니다.

0

예외적입니다.

예상되는 것들만 잡아야하며 예상되는 것들은 작은 것에 대해서 알고있는 낮은 것보다는 완료하려고하는 작업에 대해 알고있는 추상화 수준에서 잡아야합니다 작업의 일부

예를 들어 임시 파일을 저장하는 기능이 있습니다. 이 함수는 임시 파일 이름을 생성하고 파일을 저장 한 다음 임시 파일 경로를 반환하는 함수를 호출합니다.

파일 저장 기능이 이미 디렉토리에있는 파일 이름을 지정했다는 것을 알아 내면 해당 기능은 처리하지 않아야합니다. 임시 파일 이름 지정에 대해서는 알지 못합니다. 임시 파일을 저장하기 위해 호출하는 함수는 아마도이 파일을 처리해야합니다. 파일의 이름을 지정하고 중복 된 파일을 만들 수 있음을 알고 있습니다. 따라서 새 이름을 생성하고 다시 시도 할 수 있습니다.

기능 new_temp_file : 시도 : 이름 = generate_temp_name() save_temp_file (이름) 반환 이름 캐치 ExistingNameError : 반환 new_temp_file()

당신은 그것의보다 높은, 다음 높은 수준을 잡을 경우 추상화는 하위 수준에 대해 너무 많이 알고 있습니다.

이것은 간단한 예일뿐입니다.하지만 나는 모호한 말을하기를 바랍니다 : 예외를 잡아야하는 예외를 잡으십시오.

관련 문제