如何使用带有错误处理功能的try / catch语句C# [英] How to use try/catch statements with error handling C#

查看:138
本文介绍了如何使用带有错误处理功能的try / catch语句C#的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨我试图让我的加密程序在没有错误的情况下运行时使用了错误的加密密钥,所以我认为需要一个try语句,但我不知道如何在我的程序中实现它。

< pre lang =c#> private void Decrypt_Click( object sender,RoutedEventArgs e)
{
{
Stream myStream;
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
// saveFileDialog1.Filter =另存为;
saveFileDialog1.RestoreDirectory = true ;

if (saveFileDialog1.ShowDialog()== true
{
if ((myStream = saveFileDialog1.OpenFile())!= null
myStream.Close();
{
UnicodeEncoding ue = new UnicodeEncoding();
byte [] key = ue.GetBytes(Genkey.Text);
string cryptFile = saveFileDialog1.FileName;
使用(FileStream fileCrypt = new FileStream(cryptFile,FileMode.Create))
{
使用(AesManaged Decrypt = new AesManaged())
{
使用(CryptoStream cs = new CryptoStream(fileCrypt,Decrypt.CreateDecryptor(key,key), CryptoStreamMode.Write))
{
使用(FileStream fileInput = new FileStream( Openfile.Text,FileMode.Open))
{
Decrypt.KeySize = 256 ;
Decrypt.BlockSize = 128 ;
int 数据;
while ((data = fileInput.ReadByte())!= -1)
cs.WriteByte((字节)的数据);
}
}
}
}
MessageBox.Show( 文件已成功解密 已解密!);
}
}
}
}

解决方案

试一试...... catch块,如果出现错误,可能会在try块中生成(抛出)异常的所有代码。 try部分中的代码默认执行。但是,如果地下有一些错误并且抛出异常,则不再执行try块,并且在处理错误或显示错误消息的地方执行catch块。



如果您的代码应该从第1行到第x行运行,并且有可能出现错误。您可以在try部分中包装代码(从第1行到第x行)。并在其后添加一个catch块,以捕获抛出的异常



你的代码看起来像这样,



 私有  void  Decrypt_Click(对象发​​件人,RoutedEventArgs e)
{
尝试 { // 启动try catch块
Stream myStream;
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
// saveFileDialog1.Filter =另存为;
saveFileDialog1.RestoreDirectory = true ;

if (saveFileDialog1.ShowDialog()== true
{
if ((myStream = saveFileDialog1.OpenFile())!= null
myStream.Close();
{
UnicodeEncoding ue = new UnicodeEncoding();
byte [] key = ue.GetBytes(Genkey.Text);
string cryptFile = saveFileDialog1.FileName;
使用(FileStream fileCrypt = new FileStream(cryptFile,FileMode.Create))
{
使用(AesManaged Decrypt = new AesManaged())
{
使用(CryptoStream cs = new CryptoStream(fileCrypt,Decrypt.CreateDecryptor(key,key), CryptoStreamMode.Write))
{
使用(FileStream fileInput = new FileStream( Openfile.Text,FileMode.Open))
{
Decrypt.KeySize = 256 ;
Decrypt.BlockSize = 128 ;
int 数据;
while ((data = fileInput.ReadByte())!= -1)
cs.WriteByte((字节)的数据);
}
}
}
}
MessageBox.Show( 文件已成功解密 已解密!);
}
}
}
catch (例外){ / / 捕获(基本)异常并显示错误消息
MessageBox.Show( 抱歉,出现错误。错误信息: + er.Message);
}
}





Try catch广泛用于所有编程语言,让您处理任何不需要的情况你的程序可能会中断。在MSDN上阅读更多相关信息: https://msdn.microsoft.com/en-us/library/0yd65esw .aspx [ ^ ]


Hi im trying to make my encryption program run without erroring when a wrong encryption key is used so i thought a try statement was needed but i dont know how to implement that into my program.

private void Decrypt_Click(object sender, RoutedEventArgs e)
{    
    {
        Stream myStream;
        SaveFileDialog saveFileDialog1 = new SaveFileDialog();
        //saveFileDialog1.Filter = "Save As";
        saveFileDialog1.RestoreDirectory = true;

        if (saveFileDialog1.ShowDialog() == true)
        {
            if ((myStream = saveFileDialog1.OpenFile()) != null)
                myStream.Close();
            {
                UnicodeEncoding ue = new UnicodeEncoding();
                byte[] key = ue.GetBytes(Genkey.Text);
                string cryptFile = saveFileDialog1.FileName;
                using (FileStream fileCrypt = new FileStream(cryptFile, FileMode.Create))
                {
                    using (AesManaged Decrypt = new AesManaged())
                    {
                        using (CryptoStream cs = new CryptoStream(fileCrypt, Decrypt.CreateDecryptor(key, key), CryptoStreamMode.Write))
                        {
                            using (FileStream fileInput = new FileStream(Openfile.Text, FileMode.Open))
                            {
                                Decrypt.KeySize = 256;
                                Decrypt.BlockSize = 128;
                                int data;
                                while ((data = fileInput.ReadByte()) != -1)
                                    cs.WriteByte((byte)data);
                            }
                        }
                    }
                }
                MessageBox.Show("File Successfully Decrypted", "Decrypted!");
            }
        }
    }
}

解决方案

In a try...catch block, all of your code which might generate (throw) an exception if something goes wrong comes in the try block. The code in the try section executes by default. However, if there is some error underground and the exception is to be thrown, the try block is no longer executed and the catch block is executed further where you handle the error or show an error message.

If your code is supposed to run from line 1 to line x and there are some chances of getting a error. You can wrap the code (from line 1 to line x) inside the try section. And add a catch block after it, to catch the exception that thrown.

You code would look like this,

private void Decrypt_Click(object sender, RoutedEventArgs e)
{    
    try { // Start a try catch block
        Stream myStream;
        SaveFileDialog saveFileDialog1 = new SaveFileDialog();
        //saveFileDialog1.Filter = "Save As";
        saveFileDialog1.RestoreDirectory = true;
 
        if (saveFileDialog1.ShowDialog() == true)
        {
            if ((myStream = saveFileDialog1.OpenFile()) != null)
                myStream.Close();
            {
                UnicodeEncoding ue = new UnicodeEncoding();
                byte[] key = ue.GetBytes(Genkey.Text);
                string cryptFile = saveFileDialog1.FileName;
                using (FileStream fileCrypt = new FileStream(cryptFile, FileMode.Create))
                {
                    using (AesManaged Decrypt = new AesManaged())
                    {
                        using (CryptoStream cs = new CryptoStream(fileCrypt, Decrypt.CreateDecryptor(key, key), CryptoStreamMode.Write))
                        {
                            using (FileStream fileInput = new FileStream(Openfile.Text, FileMode.Open))
                            {
                                Decrypt.KeySize = 256;
                                Decrypt.BlockSize = 128;
                                int data;
                                while ((data = fileInput.ReadByte()) != -1)
                                    cs.WriteByte((byte)data);
                            }
                        }
                    }
                }
                MessageBox.Show("File Successfully Decrypted", "Decrypted!");
            }
        }
    }
    catch (Exception er) { // Catch the (base) exception and show an error message
        MessageBox.Show("Sorry, there was error. Error message: " + er.Message);
    }
}



Try catch is widely used in all programming language to let you handle any unwanted case where your program might break. Read more about it on MSDN: https://msdn.microsoft.com/en-us/library/0yd65esw.aspx[^]


这篇关于如何使用带有错误处理功能的try / catch语句C#的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆