所以我现在想要.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的证明图像:

错误是有原因的,通常不应忽略.你的理由是你没有使用正确的调用约定.有关更多信息,请参阅此答案.
至于编译和运行时错误,Graham已经指出了区别.如果得到未处理的运行时异常,通常意味着程序处于不一致状态.如果允许程序继续进行,则不能保证会发生什么.程序死亡比继续处理损坏的数据更好.您可以查看AppDomain.UnhandledException事件,但它只允许您记录异常并进行一些清理,然后程序将退出.可能还有其他选项(取决于您的编程语言)但绝对不建议使用它们.
| 归档时间: |
|
| 查看次数: |
4118 次 |
| 最近记录: |