异常处理
C# 异常处理时建立在四个关键词之上的:try、catch、finally 和 throw。
- try:一个 try 块标识了一个将被激活的异常的代码块。后跟一个或多个 catch 块。
- catch:异常的捕获。
- finally:finally 块用于执行给定的语句,不管异常是否被抛出都会执行。例如,如果您打开一个文件,不管是否出现异常文件都要被关闭。
- throw:抛出一个异常
语法:
try
{
// 引起异常的语句
}
catch( ExceptionName e1 )
{
// 错误处理代码1
}
……
catch( ExceptionName eN )
{
// 错误处理代码N
}
finally
{
// 要执行的语句
}
如果异常是直接或间接派生自 System.Exception 类,您可以抛出一个对象。您可以在 catch 块中使用 throw 语句来抛出当前的对象,如下所示
Catch(Exception e)
{
...
Throw e
}
常见异常:
举个例子:
using System;
namespace ErrorHandlingApplication
{
class DivNumbers
{
int result;
DivNumbers()
{
result = 0;
}
public void division(int num1, int num2)
{
try
{
result = num1 / num2;
}
catch (DivideByZeroException e)
{
Console.WriteLine("Exception caught: {0}", e);
}
finally
{
Console.WriteLine("Result: {0}", result);
}
}
static void Main(string[] args)
{
DivNumbers d = new DivNumbers();
d.division(25, 0);
Console.ReadKey();
}
}
}
运行结果:
Exception caught: System.DivideByZeroException: Attempted to divide by zero.
at ...
Result: 0
文件操作:FileStream类
System.IO 命名空间中的 FileStream 类有助于文件的读写与关闭。
您需要创建一个 FileStream 对象来创建一个新的文件,或打开一个已有的文件。
FileStream F = new FileStream("sample.txt", FileMode.Open, FileAccess.Read, FileShare.Read);
FileMode、FileAccess等描述
简单文件内容读取:
F.WriteByte((byte)i); //将i写入文件
Console.Write(F.ReadByte() + " "); //读取文件
F.Close();
文本文件读写
StreamReader 和 StreamWriter 类用于文本文件的数据读写。
- StreamReader 类继承自抽象基类 TextReader,表示读!!!!
using System;
using System.IO;
namespace FileApplication
{
class Program
{
static void Main(string[] args)
{
try
{
// 创建一个 StreamReader 的实例来读取文件
// using 语句也能关闭 StreamReader
using (StreamReader sr = new StreamReader("c:/jamaica.txt"))
{
string line;
// 从文件读取并显示行,直到文件的末尾
while ((line = sr.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
}
catch (Exception e)
{
// 向用户显示出错消息
Console.WriteLine("The file could not be read:");
Console.WriteLine(e.Message);
}
Console.ReadKey();
}
}
}
- StreamWriter 类继承自抽象类 TextWriter,表示写!!!!
using System;
using System.IO;
namespace FileApplication
{
class Program
{
static void Main(string[] args)
{
string[] names = new string[] {"Zara Ali", "Nuha Ali"};
using (StreamWriter sw = new StreamWriter("names.txt"))
{
foreach (string s in names)
{
sw.WriteLine(s);
}
}
// 从文件中读取并显示每行
string line = "";
using (StreamReader sr = new StreamReader("names.txt"))
{
while ((line = sr.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
Console.ReadKey();
}
}
}
二进制文件的读写
BinaryReader 和 BinaryWriter 类用于二进制文件的读写。
二进制文件读写
// 写
bw = new BinaryWriter(new FileStream("mydata", FileMode.Create));
bw.Write(i);
bw.Write(d);
//读
br = new BinaryReader(new FileStream("mydata",FileMode.Open));
int i = br.ReadInt32();
double d = br.ReadDouble();
string s = br.ReadString();
Windows 文件系统的操作
相当于文件的批量处理吧
Windows 文件系统的操作
using System;
using System.IO;
namespace WindowsFileApplication
{
class Program
{
static void Main(string[] args)
{
// 创建一个 DirectoryInfo 对象
DirectoryInfo mydir = new DirectoryInfo(@"c:\Windows");
// 获取目录中的文件以及它们的名称和大小
FileInfo [] f = mydir.GetFiles();
foreach (FileInfo file in f)
{
Console.WriteLine("File Name: {0} Size: {1}",
file.Name, file.Length);
}
Console.ReadKey();
}
}
}