C# 捕获无效Base64长度的异常

C# 捕获无效Base64长度的异常,c#,exception,try-catch,C#,Exception,Try Catch,我试图编写一个异常代码,在这里我试图捕获异常(无效的Base64长度),并通过不执行下一个操作使程序忽略它,直到它达到正确的长度。反正我能做到 以下是我从异常中得到的结果: 中发生类型为“System.FormatException”的未处理异常 mscorlib.dll 附加信息:BASE-64 CHAR数组或字符串的无效长度。< P>这不是最好的代码,但它应该做这项工作,任何方式都应该考虑更改逻辑,因为异常不适用于这个 bool handled = false; do

我试图编写一个异常代码,在这里我试图捕获异常(无效的
Base64
长度),并通过不执行下一个操作使程序忽略它,直到它达到正确的长度。反正我能做到

以下是我从异常中得到的结果:

中发生类型为“System.FormatException”的未处理异常 mscorlib.dll


附加信息:BASE-64 CHAR数组或字符串的无效长度。

< P>这不是最好的代码,但它应该做这项工作,任何方式都应该考虑更改逻辑,因为异常不适用于这个

    bool handled = false;
    do
    {
       try 
       {
          /// your code goes here
          if (decrypted)
             handled = true;
       }
       catch(FormatException e)
       {
       }
    } while (!handled)
在你的情况下,这是行不通的。您需要修改
密码字符串.Text
或等待其他用户输入。因此,您可以尝试以下方法:

    private void decryptButton_Click(object sender, EventArgs e)
    {
            string dPassphraseText = dPassphrase.Text;           

            bool decrypted = false;            
            try
            {
                byte[] cipherTextBytes = Convert.FromBase64String(cipherString.Text);
                /// your code goes here
                if (sameKey == true)
                {
                    //your code
                }
                else
                {
                   //your code
                }

            }
            catch (FormatException ex)
            {
                  //notify the user somehow, so that he will try to enter passphrase again
            }            
    }

你的尝试/捕捉看起来像什么?我还没有,因为我不知道。我的目的是防止程序在达到有效长度Base64之前解密密码字符串。这是一个GIGO问题,即垃圾输入-垃圾输出。反复尝试并不会将垃圾转化为黄金。该程序尝试解密无效的Base64字符串,但会引发异常,我如何在不引发异常的情况下执行此操作?我如何使用此代码,我是否在其显示为decrypted的位置或if代码上方输入它?您在此处输入解密代码,是的。你还应该检查它是否成功地停止了循环。不,不幸的是,它没有停止循环,建议?你能发布你的代码吗?