明らかに、これは使用している IoC コンテナーに依存します。私の経験では、例外が「飲み込まれる」ことはめったになく、解決時に報告されます。コンストラクターで依存関係を受け入れて検証する以外に何もしないという一般的なベスト プラクティスに従えば、問題はありません。
Unity の例を次に示します。
void Main()
{
IUnityContainer container = new UnityContainer();
container.RegisterType<IAnimal, Dog>();
// Exception thrown on this line
var x = container.Resolve<IAnimal>();
}
public interface IAnimal
{
}
public class Dog : IAnimal
{
public Dog()
{
throw new Exception();
}
}
これを報告します(非常に有益だと思います):
ResolutionFailedException: Resolution of the dependency failed, type = "UserQuery+IAnimal", name = "(none)".
Exception occurred while: Calling constructor UserQuery+Dog().
Exception is: Exception - Exception of type 'System.Exception' was thrown.
-----------------------------------------------
At the time of the exception, the container was:
Resolving UserQuery+Dog,(none) (mapped from UserQuery+IAnimal, (none))
Calling constructor UserQuery+Dog()