我正在为我的宠物软件构建API,我遇到以下情况:
使用其他服务的服务.我有一个服务使用另一个服务加载程序集,我应该在加载程序集的服务或使用该服务的服务上抛出异常?
AssemblyService:
public class AssemblyService : IAssemblyService
{
public Assembly Load(string assemblyName)
{
Assembly assembly;
try
{
assembly = Assembly.Load(assemblyName);
}
catch
{
assembly = null;
}
return assembly;
}
...
}
Run Code Online (Sandbox Code Playgroud)
使用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
}
Run Code Online (Sandbox Code Playgroud)
我应该像上面的例子一样在AssemblyService或CommandService中抛出异常吗?
我想学习如何处理一个例外,在上面的例子中的线assembly = Assembly.Load(assemblyName);可以抛出ArgumentNullException,ArgumentException,FileNotFoundException,FileLoadException和BadImageFormatException.我应该处理所有这些例外吗?
UnknownCommandException(commandName) is a custom exception.
Run Code Online (Sandbox Code Playgroud)
其他问题:任何使用我的API的人都知道方法什么时候会抛出异常?我看到将鼠标放在.Net Framework的任何方法上,您将看到该方法是否会引发异常.这适用于我的API方法吗?
你的标题是关于抛出异常但你实际上似乎在谈论捕获异常.您通常不应该捕获异常,除非您可以做一些有意义的事情来纠正导致首先抛出异常的条件,在这种情况下,您应该只捕获可以处理的显式异常类型.
| 归档时间: |
|
| 查看次数: |
119 次 |
| 最近记录: |