我在C ++ Builder6中有一个项目。有一个OpenDialog,我将图像上传到项目中。我希望我的项目是安全的,因为它只接受.jpg或.bmp图像我决定限制。就我而言,我可以通过将我的流阅读器设置到第4位来识别.jpg文件。如果我在这里找到“JFIF”,它将是.jpeg文件。等等。 这是我的代码
if(OpenDialog1->Execute())
{
TFileStream *stream = new TFileStream(OpenDialog1->FileName, fmOpenRead);
if(stream != NULL)
{
if(stream->Size < 10)
{
delete stream;
return;
}
char str[10];
stream->Read(str, 10);
if(AnsiString(str + 6).SetLength(4)=="JFIF")
{
ShowMessage("It's jpeg");
}
else if ( AnsiString(str).SetLength(2)=="BM") {
ShowMessage("It's bmp");
}
else
{
ShowMessage("It can not be downloaded");
return;
}
}
delete stream;
}
但不幸的是,当我在这里放置一个带有重命名扩展名的文本文件时,代码引发了关于JPEG错误#41的异常。
所以我的想法不起作用。整个问题是: 我可以让程序在不使用try-catch方法的情况下返回错误消息吗?
顺便说一句,我理解为什么会引发异常,因为我的jpeg文件是空的。但我想用我自己的系统处理它,而不是标准的例外。