例外でコンソールに何かを書き込む側面があります。コンストラクターで例外をスローする基本クラスと、コンストラクターにアスペクトを持つ派生クラスがあります。
コンストラクターの派生クラスの側面が基本クラスの例外をキャッチすることを期待していますが、そうではありません。
これは設計によるものですか?これはバグですか?それとも私は何か間違ったことをしていますか?
サンプル コード (コンソール アプリケーション) は次のとおりです。
[Serializable]
public class OnExceptionWriteAspect : OnMethodBoundaryAspect
{
public override void OnException(MethodExecutionEventArgs eventArgs)
{
Console.WriteLine("Exception catched on Aspect.");
}
}
public class BaseClass
{
public BaseClass()
{
throw new Exception();
}
}
public class DerivedClass : BaseClass
{
[OnExceptionWriteAspect]
public DerivedClass()
: base()
{
}
}
public class Program
{
static void Main(string[] args)
{
try
{
new DerivedClass();
}
catch
{
Console.WriteLine("Exception catched on Main.");
}
}
}
出力は次のとおりです。
Main で例外がキャッチされました。