在ASP中抛出类似“ArgumentException”的异常是一个好主意吗?我重写一些文章,我知道我抛出的异常转到Page_Error方法。在此之后,执行永远停留在这里。如何在Page_Error之后继续执行?
或者我应该不使用throw并制作这样的东西:
person.name = "blablabla";
if (person.NameValidatingError) Response.Write ("Ooops");
答案 0 :(得分:1)
如果您希望参数符合某种验证规则并且传入的参数不符合它们(并且您无法恢复),那么抛出ArgumentException
解释原因是个好主意它被拒绝了。
您应该在page_error
中重定向到错误页面。
答案 1 :(得分:0)
您的整个应用程序应该有一个错误页面,并将所有异常转移到该页面。
答案 2 :(得分:0)
如果你知道它可能会抛出错误,你可以将它封装在try / catch块中,而不是在设置之后检查变量。
像这样:
try
person.name = "blablabla"
catch ex as YourExceptionType
messagebox.show("There was an error in the foobar")
end try
... continue code here
答案 3 :(得分:0)
如果我们谈论C#或Asp.Net并不重要,但问题是如果它是一个好的做法抛出异常。 一般情况下,只有在严格需要时才会抛出异常,因为异常抛出会导致性能(有时甚至会隐藏堆栈跟踪)。 另一个方面是,例外情况是你无法预见的,当你编写这个功能但你不知道它可能发生的事情/避免发生 我建议你尽量避免抛出异常然后如果你的域中有要求,你可以创建一个错误页面,以便在每次得到非托管异常时重定向。
答案 4 :(得分:-1)
如果方法可以自己处理错误而不将代码置于无效状态,那么就不需要抛出异常。
否则,该方法应抛出异常,将其留给调用者来决定它是否知道如何处理异常,或者让它保持未被捕获。