是否可以使用在if语句条件中引发异常的方法?c#

是否可以使用在if语句条件中引发异常的方法?c#,c#,if-statement,exception,try-catch,throw,C#,If Statement,Exception,Try Catch,Throw,因此,我正在尝试错误处理我的代码,到目前为止,这就是我所拥有的: date = GetDate(); if(date.throws_exception()) { // would it be possible to make a condition for where you can say if date throws exception? } string GetDate() { try { . . . r

因此,我正在尝试错误处理我的代码,到目前为止,这就是我所拥有的:

date = GetDate(); 
if(date.throws_exception())
{
// would it be possible to make a condition for where you can say if date throws exception?
}

string GetDate()
{
    try
    {
        .
        . 
        .
        return date;
    }
    catch(Exception ex)
    {
        throw new Exception();
    }
}
我想知道的是,在if条件下是否有可能,您能说:

if(date throws exception)

您可以将方法调用放在try-catch块中,或者重写方法以返回一个结果对象,或者一个指示成功并保留值的元组

返回指示成功的元组的示例:

(bool Success, string Value) GetDate()
{
    try
    {
        .
        .
        .
        return (true, date);
    }
    catch(Exception ex)
    {
        return (false, null);
    }
}
使用类似于:

var result = GetDate(); 
if (result.Success)
{
    // do something with result.Value
}

您可以将方法调用放在try-catch块中,或者重写方法以返回一个结果对象,或者一个指示成功并保留值的元组

返回指示成功的元组的示例:

(bool Success, string Value) GetDate()
{
    try
    {
        .
        .
        .
        return (true, date);
    }
    catch(Exception ex)
    {
        return (false, null);
    }
}
使用类似于:

var result = GetDate(); 
if (result.Success)
{
    // do something with result.Value
}

你不想在捕鲸区做这些事情有什么原因吗?是的,是间接的。与其返回字符串,不如返回元组(bool exceptionThrown,string value),其中bool指示是否引发了异常。如果(date.exceptionThrown)有什么原因不能使用内置的
DateTime.TryParse
方法吗?是否正在尝试制定错误处理策略?如果是这样,您可能希望将错误冒泡出来,而不是创建太多的
result
对象来检查错误。一个链接,可以帮助你的错误处理策略,如果这是你的意图与这个问题。。。你不想在捕鲸区做这些事情有什么原因吗?是的,是间接的。与其返回字符串,不如返回元组(bool exceptionThrown,string value),其中bool指示是否引发了异常。如果(date.exceptionThrown)有什么原因不能使用内置的
DateTime.TryParse
方法吗?是否正在尝试制定错误处理策略?如果是这样,您可能希望将错误冒泡出来,而不是创建太多的
result
对象来检查错误。一个链接,可以帮助你的错误处理策略,如果这是你的意图与这个问题。。。类似地,如果您不喜欢元组,请使用“Try”前缀命名约定,如
bool TryGetDate(out string Value)
。用法:
var success=TryGetDate(输出字符串值);如果(success){Console.WriteLine(value);}
遵循Sean的建议,如果已经存在一个
'Try'
方法,例如
int.TryParse()
,那么使用该方法几乎总是比捕获异常并自己处理好,我将我以前的
TryGetDate
方法实现归因于
[过时]
。但我希望其他人的实现不会抛出异常类似地,如果您不喜欢元组,请使用“Try”前缀命名约定,如
bool TryGetDate(out string Value)
。用法:
var success=TryGetDate(输出字符串值);如果(success){Console.WriteLine(value);}
遵循Sean的建议,如果已经存在一个
'Try'
方法,例如
int.TryParse()
,那么使用该方法几乎总是比捕获异常并自己处理好,我将我以前的
TryGetDate
方法实现归因于
[过时]
。但我希望其他人的实现不会抛出异常