c# 相当于 vb 中的 Err

本文关键字:Err 中的 vb 相当于 | 更新日期: 2023-09-27 18:34:43

让我知道:如何在 C# 中访问 Err?这是要转换的示例 VB 代码:

If Len(sPart1) <> PART1_LENGTH Then
    Err.Raise(vbObjectError,  , "Part 1 must be " & PART1_LENGTH)
ElseIf Not IsNumeric(sPart1) Then 
    Err.Raise(vbObjectError,  , "Part 1 must be numeric")

c# 相当于 vb 中的 Err

你可以利用

  throw new Exception();

您从 MSDN 获取参考:引发错误和处理指南

假设您询问的是语法,而不是特定的类:

throw new SomeException("text");

首先,让我们将其转换为现代VB代码:

If sPart1.Length <> PART1_LENGTH Then
  Throw New ApplicationException("Part 1 must be " & PART1_LENGTH)
ElseIf Not IsNumeric(sPart1) Then
  Throw New ApplicationException("Part 1 must be numeric")
End If

然后 C# 翻译就很简单了:

int part;
if (sPart1.Length != PART1_LENGTH) {
  throw new ApplicationException("Part 1 must be " + PART1_LENGTH.ToString());
} else if (!Int32.TryParse(sPart1, out part)) {
  throw new ApplicationException("Part 1 must be numeric")
}

Err.Raise替换为

  throw new Exception("Part 1 must be numeric");

我知道异常应该在 C# 和 VB.NET 中使用,但对于后代来说,可以在 C# 中使用 ErrObject。

转换为 C# 的 OP 程序的完整示例程序:

using Microsoft.VisualBasic;
namespace ErrSample
{
    class Program
    {
        static void Main(string[] args)
        {
            ErrObject err = Information.Err();
            // Definitions
            const int PART1_LENGTH = 5;
            string sPart1 = "Some value";
            int vbObjectError = 123;
            double d;
            if (sPart1.Length != PART1_LENGTH)
                err.Raise(vbObjectError, null, "Part 1 must be " + PART1_LENGTH);
            else if (!double.TryParse(sPart1, out d))
                err.Raise(vbObjectError, null, "Part 1 must be numeric");
        }
    }
}