如何使用基于C#中自定义异常构造的函数抛出自定义异常?
我有一个自定义Exception
构造,我想抛出自定义异常使用函数而不是使用throw new ExceptionName("msg")
。 我读了Best practices for exceptions,我成功地使用了VB
而不是C#
。如何使用基于C#中自定义异常构造的函数抛出自定义异常?
这是我的自定义构建:
[Serializable()]
public class ArtCoreExceptions : Exception
{
public ArtCoreExceptions()
{
}
public ArtCoreExceptions(string message)
: base(message)
{
}
public ArtCoreExceptions(string message, Exception inner)
: base(message, inner)
{
}
protected ArtCoreExceptions(System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context)
{ }
}
我试图做这样定义一个函数:
UploadFailureException ArtCoreExceptions()
{
string description = "My NewFileIOException Description";
return new ArtCoreExceptions(description);
}
但是编译器给了我丢失的引用错误 “UploadFailureException”
背景
在VB
我曾经做到以下几点:
Public Class ArtCoreExceptions
Inherits Exception
Public Sub New()
End Sub
Public Sub New(message As String)
MyBase.New(message)
End Sub
Public Sub New(message As String, inner As Exception)
MyBase.New(message, inner)
End Sub
Public Sub New(ByVal info As SerializationInfo, context _
As StreamingContext)
MyBase.New(info, context)
End Sub
End Class
Public Function UploadFailureException() As ArtCoreExceptions
Dim description As String = "File could not be uploaded"
Return New ARTSQLExceptions(description)
End Function
而且我以前throw UploadFailureException
作为例外,我该怎么做相同的C#
你搞砸了这里。 UploadFailureException
是方法的名称(或函数,无论你喜欢叫什么),而ArtCoreExceptions
是类名称。
ArtCoreExceptions UploadFailureException()
{
string description = "My NewFileIOException Description";
return new ArtCoreExceptions(description);
}
@HimBromBeere,@Niladri ....我得到这个错误'一个命名空间不能直接包含成员,如字段或方法' – JSON
@AhmadAbuMaizar你必须把这个方法放到一个类中,就像你的VB代码那样方法属于'ArtCoreExceptions'类 – HimBromBeere
新手错误.... – JSON
我假设你想回报ArtCoreExceptions
。方法签名中的返回值来自之前的它的名字,而不是之后的它。
ReturnType MethodName(params) { ... }
相较于VB你写的函数的名称前 it's返回类型:
Function MethodName() As ReturnType
所以使用ArtCoreExceptions UploadFailureException()
{...}代替。
Public Function UploadFailureException() As ArtCoreExceptions
Dim description As String = "File could not be uploaded"
Return New ARTSQLExceptions(description)
End Function
这上面的代码建立的函数UploadFailureException(),其返回类型是类型ArtCoreExceptions的对象。你可以做同样的在C#如下
public ArtCoreExceptions UploadFailureException()
{
string description = "My NewFileIOException Description";
return new ArtCoreExceptions(description);
}
返回从派生类ArtCoreExceptions
的实例System.Exception.
你有没有考虑建立从ArtCoreExceptions衍生_“公共类UploadFailureException一个UploadFailureException类:ArtCoreExceptions {公共UploadFailureException( ):base(“文件无法上传”){}}“_ - 您可能能够处理特定的异常,而不是具有泛型异常,并且堆栈跟踪的顶部将始终引用异常点而不是以下函数调用。 – PaulF