文件不存在是怎么回事,文件路径不存在怎么办

首页 > 实用技巧 > 作者:YD1662023-10-31 13:04:12

C#异常基类--Exception类

C#中的异常处理是一种非常重要的错误处理机制,它可以帮助我们更好地管理程序中的错误和异常情况,提高程序的稳定性和可靠性。

在C#中,Exception类用于表示在应用程序执行期间出现的错误。

Exception类定义 命名空间: System 程序集: System.RunTime.dll

Exception类是所有异常的基类。 发生错误时,系统或当前正在执行的应用程序会引发包含错误相关信息的异常来报告错误。 引发异常后,由应用程序或默认异常处理程序处理。

Data

获取键/值对的集合,这些键/值对提供有关该异常的其他用户定义信息。

HelpLink

获取或设置指向与此异常关联的帮助文件链接。

HRESULT

获取或设置 HRESULT(一个分配给特定异常的编码数字值)。

InnerException

获取导致当前异常的 Exception 实例。

Message

获取描述当前异常的消息。

Source

获取或设置导致错误的应用程序或对象的名称。

StackTrace

获取调用堆栈上的即时框架字符串表示形式。

TargetSite

获取引发当前异常的方法。

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)

GetBaseException()

当在派生类中重写时,返回 Exception,它是一个或多个并发的异常的根本原因。

GetHashCode()

作为默认哈希函数。

(继承自 Object)

GetObjectData(SerializationInfo, StreamingContext)

当在派生类中重写时,用关于异常的信息设置 SerializationInfo。

GetType()

获取当前实例的运行时类型。

MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)

ToString()

创建并返回当前异常的字符串表示形式。

文件不存在是怎么回事,文件路径不存在怎么办(1)

Exception类

错误和异常

运行时错误可能由于各种原因而发生。 但是,并非所有错误都应作为代码中的异常进行处理。 下面是在运行时可能发生的一些错误类别,以及响应这些错误的适当方法。

在某些情况下,程序错误可能会反映预期的或例程错误条件。 在这种情况下,可能希望避免使用异常处理来处理程序错误,需要进行重试操作。

示例1:如果用户需要输入特定格式的日期,则可以通过调用 DateTime.TryParseExact 方法分析日期字符串,该方法返回一个Boolean值,该值指示分析操作是否成功,而不是使用 DateTime.ParseExact 方法,如果日期字符串无法转换为DateTime值,该方法将FormatException引发异常。

示例2:如果用户尝试打开不存在的文件,可以首先调用 File.Exists 方法来检查文件是否存在,如果不存在,则提示用户是否要创建该文件。

在其他情况下,程序错误反映了可以在代码中处理的意外错误条件。 例如,即使已检查以确保某个文件存在,也可能在打开该文件之前将其删除,或者该文件可能已损坏。 在这种情况下,尝试通过实例化 StreamReader 对象或调用 Open 方法打开文件可能会引发 FileNotFoundException 异常。 在这些情况下,应使用异常处理从错误中恢复。

示例:如果程序运行时无法分配额外的内存,则任何方法都可能会引发 OutOfMemoryException 异常。 通常,系统故障不使用异常处理来处理。 相反,你可能能够使用事件(例如 AppDomain.UnhandledException 并调用 Environment.FailFast 方法)来记录异常信息,并在应用程序终止之前通知用户失败。

Try/catch 捕获及处理异常方法

在C#中,异常处理使用try-catch语句来实现。try语句包含可能会抛出异常的代码,而catch语句则包含处理异常的代码。当try中的代码抛出异常时,程序会立即跳转到相应的catch语句中执行异常处理代码。可以有一个或多个 catch 块,每个块都设计用于处理特定类型的异常,或者一个块旨在捕获比另一个块更具体的异常。每个 catch 块都包含一个类型筛选器,用于确定它处理的异常类型。

当块中 try 发生异常时,系统会按它们在应用程序代码中出现的顺序搜索关联的 catch 块,直到找到 catch 处理异常的块。 catch如果 catch 块的类型筛选器指定T或派生自的任何类型,T则块将处理 类型的T异常。 系统在找到处理异常的第一个 catch 块后停止搜索。 出于此原因,在应用程序代码中, catch 必须在处理其基类型的块之前 catch 指定处理类型的块,如本节后面的示例所示。 最后指定处理 System.Exception 的 catch 块。

文件不存在是怎么回事,文件路径不存在怎么办(2)

Try/catch 捕获及处理异常方法

以下是一个简单的异常处理范例:

try { // 可能会抛出异常的代码 int x = 10 / 0; //这里会抛出一个DivideByZeroException异常 } catch (DivideByZeroException ex) { // 处理异常的代码 Console.WriteLine("发生除以零的错误:" ex.Message); }

在上面的例子中,try中的代码会抛出一个DivideByZeroException异常,当这个异常发生时,程序会立即跳转到catch语句中,并执行相应的异常处理代码。在catch语句中,我们通过ex参数获取了异常的详细信息,并打印出来。

异常类作用

异常类的作用有:

异常类属性

类Exception包含许多属性,这些属性可帮助标识代码位置、类型、和异常原因等,如StackTrace、InnerException、Message、HelpLink、HResultSource、 TargetSite和 Data。

常见的异常类型

下表列出了常见的异常类型以及引发这些异常的条件:

异常

条件

ArgumentException

传递给方法的非 null 参数无效。

ArgumentNullException

传递给方法的参数为 null。

ArgumentOutOfRangeException

参数超出了有效值的范围。

DirectoryNotFoundException

目录路径的一部分无效。

DivideByZeroException

整数或 Decimal 除法运算中的分母为零。

DriveNotFoundException

驱动器不可用或不存在。

FileNotFoundException

文件不存在。

FormatException

值的格式不合适,无法通过等 Parse转换方法从字符串转换。

IndexOutOfRangeException

索引超出数组或集合的边界。

InvalidOperationException

方法调用在对象的当前状态下无效。

KeyNotFoundException

找不到用于访问集合中成员的指定键。

NotImplementedException

未实现方法或操作。

NotSupportedException

不支持方法或操作。

ObjectDisposedException

对已释放的对象执行操作。

OverflowException

算术、强制转换或转换运算会导致溢出。

PathTooLongException

路径或文件名超过系统定义的最大长度。

PlatformNotSupportedException

当前平台上不支持该操作。

RankException

将具有错误维度数的数组传递给方法。

TimeoutException

分配给操作的时间间隔已过期。

UriFormatException

使用了无效的统一资源标识符 (URI) 。

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.