0
私のコードで "ネスト"または "カプセル化"カスタムエラー(I504Error
)をキャッチしようとしています。私はこれが通常、ベストプラクティスではないことを知っていますが、エラーが非常に具体的なので、私のユースケースではうまくいくはずです。 try/catch
ブロックをMain
メソッドのI504Error
にキャッチするようにしようとしていますが、try/catch
ブロック内から呼び出されていてもキャッチしません。私のプログラムは、私がエラーを投げている場所で停止します。私はここで間違って何をしていますか?C#は "ネスト"カスタム例外をキャッチしません
// Custom Error Handler
public class I504Error : Exception
{
public I504Error()
{
}
}
// Classes
public abstract class AbstractIternetThing
{
public abstract void DoSomething();
}
public class IternetThing : AbstractIternetThing
{
public override void DoSomething()
{
// bunch of other stuff
if (iternetThingWorkedProperly == false)
{
// Program stops here, doesn't get caught by the try/catch block in Program.Main()
throw new I504Error();
}
}
}
// Main script
class Pogram
{
static void Main(string[] args)
{
List<Task<AbstractIternetThing>> programThreads = new List<Task<AbstractIternetThing>>();
IternetThing iThing = new IternetThing();
try
{
for (int wantedThread = 0; wantedThread < 5; wantedThread++)
{
Task<AbstractIternetThing> iThingTask = new Task<AbstractIternetThing>(() => iThing.DoSomething());
iThingTask.Start();
}
}
// The Error should get caught here, but it doesnt?
catch (I504Error)
{
// Do something else
}
}
}