c#异常的处理

public static void DownIMG(String uri, String path)
        {
            WebResponse response = null;
            Stream reader = null;
            FileStream writer = null;
            try
            {
                WebRequest request = WebRequest.Create(uri);
                request.Timeout = Timeout.Infinite;
                response = request.GetResponse();

                String type = response.ContentType;
                if (type.StartsWith("image/png"))
                {
                    path += ".png";
                }
                else
                {
                    path += ".jpg";
                }

                reader = response.GetResponseStream();
                writer = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write);
                byte[] buff = new byte[512];
                int c = 0; //实际读取的字节数
                while ((c = reader.Read(buff, 0, buff.Length)) > 0)
                {
                    writer.Write(buff, 0, c);
                }
            }
            catch (Exception e)
            {
                throw e;//在这里抛出异常是可以的,finally里面的代码依然会执行,会先运行到这里,再运行finally,再运行调用该方法的try
            }
            finally
            {
                if (writer != null)
                {
                    writer.Close();
                    writer.Dispose();
                }
                if (reader != null)
                {
                    reader.Close();
                    reader.Dispose();
                }
                if (response != null)
                {
                    response.Close();
                }
            }
        }
原文地址:https://www.cnblogs.com/i80386/p/2853015.html