首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FCL是否已经有异常,意味着方法执行失败?

FCL是否已经有异常,意味着方法执行失败?
EN

Stack Overflow用户
提问于 2009-03-06 12:19:50
回答 4查看 286关注 0票数 0

我有自己的异常,它一直在抛出方法的执行失败(在我的例子中是p/invoke)。

代码语言:javascript
复制
public PInvokeException(string methodName)
: base(String.Format(CultureInfo.CurrentCulture,
"An error occured while external method '{0}' call",
methodName)) { }

但我想用已经存在的代替它。FCL里有类似的东西吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-03-13 12:09:34

您的调用方是否会根据是否抛出PInvokeException和InvalidOperationException而采取不同的操作?如果是这样,那么创建一个自定义PInvokeException。否则,请使用InvalidOperationException和明确的错误消息。

如何设计异常层次结构

票数 2
EN

Stack Overflow用户

发布于 2009-03-06 12:31:45

在BCL中没有什么是专门用于PInvoke调用的。最接近的是Marshal.GetExceptionForHR和Marshal.GetHRForLastWin32Error。当PInvoke调用失败时,您可以使用这两个函数的组合抛出适当的异常。

例如:

代码语言:javascript
复制
throw Marshal.GetExceptionForHR(Marshal.GetHRForLastWin32Error());
票数 1
EN

Stack Overflow用户

发布于 2009-03-09 11:27:11

有一个:Win32Exception

如果要抛出异常的方法是.Net方法,则应该使用自定义异常(或者根据发生的情况,使用现有的异常)。

例如,如果您代表调用您的方法的人调用一个方法(或者与反射有关,但MethodInfo.Invoke无论如何都会这样做):

代码语言:javascript
复制
public void DoIt(Action action) { action(); }

您应该使用TargetInvocationException异常。

如果无法处理异常,请重新抛出它,或忽略它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/618661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档