我可以不使用try catch来忽略错误吗?

问题描述

| 因此,我现在是否想让.NET语言在不使用try catch构造的情况下忽略错误? 例如,我可以忽略与#Nowarring 40的交战,我可以忽略错误吗? 我为什么要它? 只是想用这种方式让系统暂停
open System.Runtime.InteropServices
[<DllImport(@\"msvcrt.dll\")>]
extern void system(string str)
system \"pause\"
但收到错误消息   不平衡堆栈。这可能是   因为托管的PInvoke签名   与不受管理的目标不符   签名。确保通话   的约定和参数   PInvoke签名匹配目标   非托管签名。 所以我不在乎,它有效。但是我可以忽略这个错误吗?没有做类似这样的怪事:
try (system \"pause\") catch |_->()
好的,我通过添加CallingConvention = CallingConvention.Cdecl解决了我的问题,但是问题是关于跳过异常的问题,所以我仍然不知道是否可以做到这一点。 因此,也许我需要告诉一些真正的理由,不要对其进行严格的投票-有时即使存在严重的错误职业,程序的生存也很重要,但有时甚至不需要抓住它们。您只需要忽略它们... 离题:有关使用void而不是int的证明图像:     

解决方法

在C#中,我认为除了ѭ2之外,没有一种方法可以忽略所有异常 在VB.Net中,有一种方法可以忽略所有异常: VB.Net代码:
On Error Resume Next \'\' all exceptions after this point will be ignored  
System(\"pause\")
但这是一个危险的功能。只有在以下情况下才应忽略异常 您绝对有信心了解它们发生的原因 您绝对有信心可以安全地忽略它们。 以我的愚见,并没有冒犯的意思,从您的问题来看,我认为您不理解为什么会发生错误,或者为什么忽略该错误很危险。     ,出现错误的原因通常不应该被忽略。原因是您没有使用正确的调用约定。有关更多信息,请参见此答案。 至于编译和运行时错误,Graham已经指出了区别。如果收到未处理的运行时异常,则通常意味着您的程序处于不一致状态。如果程序可以继续执行,则无法保证会发生什么。程序死掉比处理损坏的数据更好。您可以看一下AppDomain.UnhandledException事件,但它只允许您记录异常并进行一些清除,程序仍将退出。可能还有其他选择(取决于您的编程语言),但是绝对不建议使用它们。     ,不。当您谈论忽略警告时,这些是编译器警告。您可以根据需要忽略这些信息,但是它们通常是出于充分的原因警告您某些事情。您不能忽略编译器错误,因为发生这些错误时,您的代码尚未编译且没有二进制文件可运行。 当您谈论问题中的错误时,您实际上是在指异常。这些在运行时抛出。 “忽略”它们的唯一方法是拥有一个try / catch块,该块可以捕获异常并且不对其进行任何处理。 另外,如果您确实需要忽略异常,则最好捕获要忽略的特定异常,而不是任何异常。因此,而不是像这样:
try
{
   ...
}
catch
{
}
要么
try
{
   ...
}
catch(Exception)
{
}
你应该尝试使用
try
{
   ...
}
catch(SpecificExceptionType)
{
}
    ,为什么不这样声明呢?
extern int system(string str)
您的编译器在这里告诉您一些重要的信息:它告诉您
system
函数返回
int
,并且它不知道该如何处理。您必须确保签名匹配!     ,没有内置的方法可以忽略异常,但是您可以定义自己的函数来做到这一点:
let ignoreError func defaultValue =
    try func() with _ -> defaultValue
    ,或者您可以简单地关闭MDA。     ,一种方法是创建一个采用System.Action对象并传递一个lambda表达式来执行的方法,然后每当您要执行某项操作并忽略所有错误时,只需将此方法调用包装起来即可。如下所示。
    public void IgnoreError(System.Action action)
    {
        try
        {
            action.Invoke();
        }
        catch
        {
        }
    }

    public void SomeMethod()
    {
        IgnoreError(() => { system \"pause\"; });
    }
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...