我可以在不使用try catch()的情况下忽略错误吗?

cnd*_*cnd 2 .net c# vb.net f#

所以我现在想要.NET语言可以忽略错误而不使用try catch构造吗?

我可以用#nowarring 40来忽略交战,例如,我可以忽略错误吗?

我为什么要这样?

只是想用这种方式调用系统暂停

open System.Runtime.InteropServices
[<DllImport(@"msvcrt.dll")>]
extern void system(string str)
system "pause"
Run Code Online (Sandbox Code Playgroud)

但得到了错误信息

不平衡的堆栈.这可能是因为托管的PInvoke签名与非托管目标签名不匹配.确保PInvoke签名的调用约定和参数与目标非托管签名匹配.

所以我不在乎,它有效.但我可以忽略这个错误吗?没有像这样奇怪的东西:

try (system "pause") catch |_->()
Run Code Online (Sandbox Code Playgroud)

好吧,我通过添加CallingConvention = CallingConvention.Cdecl解决了我的问题,但问题是关于跳过异常,所以我仍然不知道我是否可以做到.

所以,也许我需要告诉一些真正的理由不要投票很难 - 有时即使有严重的错误职业,程序也要生存,但即使有时你也不需要抓住它们.你需要忽略它们......

off topic:关于使用void而不是int的证明图像: 证明

Pat*_*tko 8

错误是有原因的,通常不应忽略.你的理由是你没有使用正确的调用约定.有关更多信息,请参阅此答案.

至于编译和运行时错误,Graham已经指出了区别.如果得到未处理的运行时异常,通常意味着程序处于不一致状态.如果允许程序继续进行,则不能保证会发生什么.程序死亡比继续处理损坏的数据更好.您可以查看AppDomain.UnhandledException事件,但它只允许您记录异常并进行一些清理,然后程序将退出.可能还有其他选项(取决于您的编程语言)但绝对不建议使用它们.