【发布时间】:2011-01-05 17:14:38
【问题描述】:
可能重复:
Do try/catch blocks hurt performance when exceptions are not thrown?
大家好, 只是一个关于 try..catch 块的快速问题。我听说它们使用起来很昂贵,不应该用作程序流程的一部分。但是,为了验证电子邮件地址,我使用了以下代码。
try
{
MailAddress checkEmail = new MailAddress(testEmail);
return true;
}
catch
{
return false;
}
由于之前的验证,我不会捕获很多异常,除非它是试图绕过验证。我的问题是,Try...Catch 块是否仅在捕获异常时才昂贵,或者无论是否抛出任何异常,它都总是昂贵?
谢谢
编辑:感谢所有回复。我已经决定,因为检查(在 C# 中)不是很昂贵,所以我会坚持使用这种方法。这主要是因为很少发生实际抛出的异常,因为之前的验证步骤可确保没有人意外输入无效的电子邮件地址。
【问题讨论】:
-
你说异常不应该发生,如果发生了,那是有人试图绕过你的安全机制的结果。既然您知道系统中存在攻击者,那么吃掉异常并愉快地继续前进似乎是明智的吗?我会让异常冒泡到调用者并停止程序。当您注意到有一个持斧头的敌对人绕过了您的建筑物安全并触发了警报时,您让警报响起并召唤安全;你不会自动关闭闹钟!
-
嗨,埃里克。我的实际代码比这大得多。它监视用户、记录数据并阻止访问。我只是展示了一个我正在做的示例调用,看看它是否是一种有效的做事方式:)
-
@Eric - 精彩的引述 - 让我微笑,谢谢。
-
记住@Skider“安全是一种幻觉”
标签: c# performance exception try-catch