[英]What is the difference between ArgumentException and just Exception?
[英]What is the difference between an error and an exception in .NET?
你能否向我解释一下错误和异常之间的区别?
异常是从System.Exception
类派生的类型的对象。 它在throw
语句中用于将控制转移到调用堆栈中某个地方的try
块中的catch
子句。
错误只是您要解释的一些代码或消息。 错误代码的问题是您可以决定忽略它们:
MethodThatReturnsAnError();
SomeCodeThatShouldNotExecuteOnError();
如果返回一个错误代码,该调用将简单地忽略错误代码。 然而:
MethodThatThrowsAnException();
SomeCodeThatShouldNotExecuteOnError();
这是不可忽视的,并且会通过“ SomeCodeThatShouldNotExecuteOnError();
”将控制权转移到堆栈。
异常是一个利用语言语义的类。 正如其他人所说,异常会中断执行堆栈直到被捕获。 可以使用异常来传达错误,但更常见的是用于表示已发生异常的事件。
另一方面,错误可能是例外与否。
有几种错误:
实际上,异常应限于处理运行时错误,因为输入错误数据的用户不是“例外”。 要处理用户错误,您应采取以下方法:
应将异常用作用户错误的“最后一道防线”。 如果您正在编写持久层,则可以依赖异常来确保通过验证而丢失的错误数据不会持久存在。 但是,您应该通过在验证中添加一个修复程序来解决这些错误,从而防止错误首先发生。
通常,我将它们归类为:
错误 - 是应用程序中的已知工作流程。 例如:身份验证期间未提供的用户名是错误。
应用程序可以处理这些情况,并且能够向用户显示友好消息,以提示正确输入和/或处理不同的数据。
异常 - 通常在离开系统时抛出和/或应用程序中发生意外情况。 例如:由于权限不足或文件不存在,打开文件句柄可能会引发异常。
通常在这种情况下,应用程序可以捕获这些异常和/或编写通用处理程序来处理系统中的所有异常。
根据经验,如果您知道由于应用程序无法继续工作而存在特定情况,请将其标记为错误并正常处理该情况。
所有剩余的“未知 - 未知”都可以归入“例外”类别。
HTH。
您必须编写代码才能忽略的例外情况。 您必须编写代码以不忽略的错误代码。
如果没有给定异常的异常处理程序,程序将停止执行并显示错误消息。
未处理的异常是错误。 因此,所有错误都是例外,但事实并非如此。 异常处理技术处理异常/意外情况(错误),而错误是我们预期不会发生的情况,我们必须通过将用户重定向到一些静态HTML页面并将其捕获到Logs&来处理它们。想出了一个错误的解决方案。
错误可能发生在两个级别
编译CustomError ... CustomError错误....错误编译注意 - 页面级错误处理会覆盖应用程序级错误处理。
异常处理: - >
本地(方法级别)
Will Link-> http://msdn.microsoft.com/en-us/library/ms173160(v=vs.80).aspx
例外是报告和处理执行失败的一种方式。 换句话说,它们用于传达错误条件(在“ 框架设计指南”一书中解释Krzysztof Cwalina)。
错误是事件。 Exception类表示在应用程序执行(运行时)期间发生的错误,并提供使用try catch块处理它们的机制。 错误可能是运行时或编译器错误。
错误事件的示例:System.Web dll的HttpApplication.Error事件,System.IO的FileSystemWatcher.Error事件两个dll都具有相同的Error事件定义
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方法来记录异常信息,并在应用程序终止之前通知用户失败。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.