我正在尝试编写一个异常代码,我尝试捕获异常(无效Base64
长度)并让程序忽略它而不执行下一个操作,直到它的长度合适。无论如何我能做到吗?
以下是我因异常而得到的结果:
发生了'System.FormatException'类型的未处理异常 mscorlib.dll中
附加信息:Base-64字符数组或字符串的长度无效。
答案 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
}
}