1) 의존성 주입 모델을 따른 경우 특정 부분의 실제 구현을 모의로 대체하여 필요에 따라 예외를 throw 할 수 있습니다. 그러나 처음에는 특정 방식으로 애플리케이션을 설계하거나 완전히 리엔지니어링해야합니다.
처럼:
public class SqlUsersRepository : IUsersRepository
{
public void RegisterNewUser (User newUser)
{
throw new SqlException ("Connection timeout");
}
}
그러나 여기서 우리는 소비자 코드가 구체적인 구현 예외를 처리하는 데 관심을 가져서는 안된다는 문제가 있습니다.
2) 또 다른 방법은 특정 메소드 호출을 사용자 정의 래퍼로 바꾸는 것입니다.
대신에:
FileStream fs = File.OpenRead (path);
너는 사용한다:
FileStream fs = File.OpenRead_Test (path);
사용자 정의 확장 방법을 제공함으로써 (단순한 아이디어) :
public static FileStream OpenRead_Test (this System.IO.File file, string path)
{
throw new FileNotFoundException ();
}