三分之十的菜鸟C#学习小记(十一)异常处理和文件操作

异常处理

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();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值