ペット用ソフトウェアのAPIを構築していますが、次のような状況にあります。APIに例外をスローする適切なタイミングは何ですか?
別のサービスを使用するサービス。アセンブリをロードするサービスまたはそのサービスを使用するサービスで例外をスローする必要があるかどうか、アセンブリをロードするために別のサービスを使用するサービスがありますか?
AssemblyService:
public class CommandService : ICommandService
{
private readonly IAssemblyService assemblyService;
public CommandService(IAssemblyService assemblyService)
{
this.assemblyService = assemblyService;
}
public CommandOutput Process(string inputCommand, string requestInfo)
{
string commandName = GetAssemblyName(inputCommand);
string args = GetArgs(inputCommand);
Assembly assembly = assemblyService.Load(commandName);
if (assembly == null) throw new UnknownCommandException(commandName);
ICommand command = assemblyService.GetCommand(assembly);
return command.Execute(args, requestInfo);
}
#region Private methods
...
#endregion
}
は、私は上記の例のようにAssemblyServiceまたはCommandServiceに例外をスローする必要がありますAssemblyServiceを使用
public class AssemblyService : IAssemblyService
{
public Assembly Load(string assemblyName)
{
Assembly assembly;
try
{
assembly = Assembly.Load(assemblyName);
}
catch
{
assembly = null;
}
return assembly;
}
...
}
サービス?
私はラインassembly = Assembly.Load(assemblyName);
がArgumentNullException
、ArgumentException
、FileNotFoundException
、FileLoadException
とBadImageFormatException
を投げることができる上記の例では、例外を処理する方法を学ぶしようとしています。これらの例外をすべて処理する必要がありますか?
UnknownCommandException(commandName) is a custom exception.
その他の質問:APIを使用している人は、メソッドが例外をスローする可能性があることを知ることができますか?メソッドが例外をスローする可能性がある場合は、.NET Frameworkの任意のメソッドにマウスを置くことができます。これは私のAPIのメソッドで動作しますか?