c# - 我可以不使用 try catch() 来忽略错误吗?

标签 c# .net vb.net f#

所以我现在想知道 .NET 语言是否可以在不使用 try catch 构造的情况下忽略错误?

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

为什么我想要它?

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

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

但收到错误信息

unbalanced stack. This is probably because the managed PInvoke signature does not match the unmanaged target signature. Make sure that the calling convention and parameters of the PInvoke signature match the target unmanaged signature.

所以我不在乎,它有效。但是我可以忽略这个错误吗?不做那样奇怪的事情:

try (system "pause") catch |_->()

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

因此,也许我需要说出一些真正的理由,以免被严重否决 - 有时,即使在职业中出现严重错误,程序也能继续存在很重要,但有时你也不需要捕获它们。你只需要忽略它们...

题外话:关于使用 void 而不是 int 的证明图片: proof

最佳答案

错误的存在通常不应被忽视。您的原因是您没有使用正确的调用约定。参见 this answer获取更多信息。

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

关于c# - 我可以不使用 try catch() 来忽略错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6123618/

相关文章:

c# - TestContext.Properties 可用吗?

c# - 构造函数中的 new 和成员声明中的 new 有什么区别?

c# - 获取不存在的文件

c# - 为什么我的异步回调在同一个线程中运行?

vb.net - 每个文件有推荐的代码行数吗?

mysql - 在VB.NET中执行多个存储过程

c# - 静态字符串变量即使为空也会占用内存空间吗?

.net - 如何安装以管理员身份运行的 Windows 服务?

vb.net - 使用 LumenWorks 解析器从预定行/行开始处理 CSV 文件

c# - 检查 CTRL+ALT+DEL 屏幕是否可见的替代方法