gpt4 book ai didi

c# - 自定义异常和基本构造函数

转载 作者:行者123 更新时间:2023-11-30 13:47:55 25 4
gpt4 key购买 nike

我一直在尝试编写自己的自定义构造函数,但遇到有关 base() 构造函数的错误。我也一直在寻找如何解决这个错误,但一无所获,互联网上的所有示例都显示与我几乎相同的代码。

整个Exception.cs内容:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace RegisService
{
public class Exceptions : Exception
{
}

public class ProccessIsNotStarted : Exceptions
{
ProccessIsNotStarted()
: base()
{
//var message = "Formavimo procesas nestartuotas";
//base(message);
}

ProccessIsNotStarted(string message)
: base(message) {}

ProccessIsNotStarted(string message, Exception e)
: base(message, e) {}
}
}

base() 的第一个重载正在运行,没有抛出任何错误。第二个和第三个重载告诉我:

"RegisService.Exceptions does not contain a constructor that takes 1(2) arguments"

我一直在尝试解决错误的另一种方法:

ProccessIsNotStarted(string message)              
{
base(message);
}

ProccessIsNotStarted(string message, Exception e)
{
base(message, e);
}

这一次,VS 告诉我:

"Use of keyword 'base' is not valid in this context"

那么,问题出在哪里呢?看起来 base() 构造函数有一些奇怪的重载,或者我以不恰当的方式调用它?

最佳答案

您的Exceptions 类需要定义您要提供的所有构造函数。 System.Exception 的构造函数不是虚拟的或抽象的。关键字 base 不会调用所有基类的成员,而是调用您在类声明中提供的一个基类的成员。看看这个:

public class Exceptions : Exception
{
public Exceptions(string message)
: base(message) {}
}

public class ProccessIsNotStarted : Exceptions
{
public ProccessIsNotStarted()
: base()
{
}

public ProccessIsNotStarted(string message)
: base(message)
{
// This will work, because Exceptions defines a constructor accepting a string.
}

public ProccessIsNotStarted(string message, Exception e)
: base(message, e)
{
// This will not work, because Exceptions does not define a constructor with (string, Exception).
}
}

默认情况下定义了无参数构造函数。要隐藏它,您需要将其声明为 private

关于 MSDN你应该保持你的异常继承层次结构平坦:

If you are designing an application that needs to create its own exceptions, you are advised to derive custom exceptions from the Exception class. It was originally thought that custom exceptions should derive from the ApplicationException class; however in practice this has not been found to add significant value.

您也可以看看 this page .

关于c# - 自定义异常和基本构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14808292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com