捕获无效Base64长度的异常

时间:2014-12-10 20:01:53

标签: c# exception try-catch

我正在尝试编写一个异常代码,我尝试捕获异常(无效Base64长度)并让程序忽略它而不执行下一个操作,直到它的长度合适。无论如何我能做到吗?

以下是我因异常而得到的结果:

  

发生了'System.FormatException'类型的未处理异常   mscorlib.dll中

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

1 个答案:

答案 0 :(得分:1)

它不是最好的代码片段,但它应该可以完成这项工作,你应该考虑改变你的逻辑,因为异常并不意味着用于此

    bool handled = false;
    do
    {
       try 
       {
          /// your code goes here
          if (decrypted)
             handled = true;
       }
       catch(FormatException e)
       {
       }
    } while (!handled)

在你的情况下这不起作用。您需要修改cipherString.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
            }            
    }