是否可以使用在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
方法实现归因于[过时]
。但我希望其他人的实现不会抛出异常