您能否向我解释一下错误和异常之间的区别?
答案 0 :(得分:13)
异常是从System.Exception
类派生的类型的对象。它在throw
语句中用于将控制权转移到调用堆栈上游某处catch
块中的try
子句。
错误只是您要解释的一些代码或消息。错误代码的问题在于您可以决定忽略它们:
MethodThatReturnsAnError();
SomeCodeThatShouldNotExecuteOnError();
如果返回错误代码,该调用将简单地忽略错误代码。但是:
MethodThatThrowsAnException();
SomeCodeThatShouldNotExecuteOnError();
这是不可忽视的,并会将控制权转移到堆栈,超过“SomeCodeThatShouldNotExecuteOnError();
”。
答案 1 :(得分:13)
异常是一个利用语言语义的类。正如其他人所说,异常会中断执行堆栈直到被捕获。可以使用 例外来传达错误,但更常见的是用于表示发生了异常情况。
另一方面,错误可能是例外与否。
有几种错误:
实际上,异常应限于处理运行时错误,因为输入错误数据的用户不是“例外”。要处理用户错误,您应采取以下方法:
应将异常用作用户错误的“最后一道防线”。如果您正在编写持久层,则可以依赖异常来确保通过验证而丢失的错误数据不会持久存在。但是,您应该通过在验证中加入修复来解决这些问题,以防止错误首先发生。
答案 2 :(得分:2)
您必须编写要忽略的代码的例外情况。您必须将代码写入而不是忽略的错误代码。
答案 3 :(得分:2)
通常,我将它们归类为:
错误 - 是应用程序中的已知工作流程。例如:身份验证期间未提供的用户名是错误的 该应用程序可以处理这些情况和将能够向用户显示友好消息,以提示正确输入和/或处理不同的数据。
异常 - 在离开系统和/或应用程序中发生意外情况时通常会抛出。例如:由于权限不足或文件不存在,打开文件句柄可能会引发异常 通常在这种情况下,应用程序可以捕获这些异常和/或编写通用处理程序来处理系统中的所有异常。
根据经验,如果您知道由于应用程序无法继续工作而存在特定情况,请将其标记为错误&优雅地处理案件。
所有剩余的“未知 - 未知”可以归入“例外”类别。
HTH。
答案 4 :(得分:1)
如果没有给定异常的异常处理程序,程序将停止执行并显示错误消息。
未处理的例外是错误。因此,所有错误都是例外,但事实并非如此。 异常处理技术处理异常/意外情况(错误),而错误是我们预期不会发生的情况,所以我们必须通过将用户重定向到一些静态HTML页面来解决这些问题。将其捕获到Logs&找出错误发生的解决方案。
错误可能发生在2个级别
编译 CustomError ... CustomError 错误....错误 汇编 注意 - 页面级错误处理会覆盖应用程序级错误处理。
异常处理: - >
本地(方法级别)
威尔 链路> http://msdn.microsoft.com/en-us/library/ms173160(v=vs.80).aspx
答案 5 :(得分:0)
异常:当某个操作中的某个步骤失败时,该操作中的所有后续步骤都不会被执行。这是异常闪耀的地方。
错误:就像第一种情况一样,您希望暂停执行当前代码,但在此之前,您需要释放以前分配的任何资源。
说完了,
异常类有HResult property。 HRESULT是一个32位值,分为三个不同的字段:严重性代码,设施代码和错误代码。
看一下这篇文章,会帮助你更好地理解
答案 6 :(得分:0)
异常是报告和处理执行失败的一种方式。换句话说,它们用于传达错误条件(在Framework Design Guidelines一书中解释Krzysztof Cwalina)。
答案 7 :(得分:0)
错误是事件。 Exception类表示在应用程序执行(运行时)期间发生的错误,并提供使用try catch块处理它们的机制。 错误可能是运行时或编译器错误。
错误事件的示例: System.Web的HttpApplication.Error事件,System.IO的FileSystemWatcher.Error事件 两个dll都具有相同的错误事件定义
public event EventHandler Error
来自.Net Framework 4.5文档https://msdn.microsoft.com/en-us/library/system.exception(v=vs.110).aspx
异常类表示在应用程序执行期间发生的错误。
错误和例外
运行时错误可能由于各种原因而发生。但是,并非所有错误都应作为代码中的异常处理。以下是运行时可能发生的一些错误类别以及响应它们的适当方法。
使用错误。使用错误表示程序逻辑中可能导致异常的错误。但是,错误应该通过异常处理来解决,而不是通过修改错误的代码来解决。
程序错误。程序错误是运行时错误,无法通过编写无错代码来避免。
在某些情况下,程序错误可能反映预期或常规错误情况。在这种情况下,您可能希望避免使用异常处理来处理程序错误,而是重试该操作。
在其他情况下,程序错误反映了可以在代码中处理的意外错误情况。
系统故障。系统故障是运行时错误,无法以有意义的方式以编程方式处理。例如,如果公共语言运行库无法分配额外的内存,则任何方法都可以抛出OutOfMemoryException异常。通常,使用异常处理不会处理系统故障。相反,您可以使用AppDomain.UnhandledException等事件并调用Environment.FailFast方法来记录异常信息,并在应用程序终止之前通知用户失败。