Я создаю API для своего программного обеспечения для домашних животных, и я в следующей ситуации:Какое подходящее время для исключения исключений в API?
Служба, использующая другую услугу. У меня есть служба, которая использует другую службу для загрузки сборки, следует ли исключить исключение в службе, которая загружает сборку или службу, использующую эту услугу?
AssemblyService:
public class AssemblyService : IAssemblyService
{
public Assembly Load(string assemblyName)
{
Assembly assembly;
try
{
assembly = Assembly.Load(assemblyName);
}
catch
{
assembly = null;
}
return assembly;
}
...
}
Услуги, которые используют 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 как в примере выше?
Я пытаюсь узнать, как обрабатывать исключения, в приведенном выше примере линия assembly = Assembly.Load(assemblyName);
может бросить ArgumentNullException
, ArgumentException
, FileNotFoundException
, FileLoadException
и BadImageFormatException
. Должен ли я обрабатывать все эти исключения?
UnknownCommandException(commandName) is a custom exception.
Другой вопрос: Любой, кто использует мой API, может знать, когда метод может вызвать исключение? Я вижу, как накладывается мышь на любые методы .Net Framework, вы увидите, может ли метод генерировать исключение. Может ли это работать с методами моего API?