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代码上方输入它?您在此处输入解密代码,是的。你还应该检查它是否成功地停止了循环。不,不幸的是,它没有停止循环,建议?你能发布你的代码吗?