在抛出异常后,出现
System Error Code:6句柄无效,
怎么解决,才怎么解决?
是不是Exception类的问题呀
10 个解决方案
#1
在你跑出异常前,是不是把某个句柄关了,或删了,有没有源码
#2
很大的一个程序,游戏方面的,它在结束时抛出一个GameEnd异常,然后就出现这个提示
#3
比如说,用FileOpen打开文件,然后用FileClose关闭了文件,这时的文件句柄就是无效的。
#4
跟踪一下,在退出函数中的关闭或者处理的 Handle
#5
在结束的时候有一个函数
::PostQuitMessage(0);
然后就出现
Systerm error code: 6
::PostQuitMessage(0);
然后就出现
Systerm error code: 6
#6
执行PostQuitMessage的目的就是要退出程序,既然你的程序已经结束了,还执行PostQuitMessage干什么?
#7
我跟踪了一下,过程是这样
游戏结束调用throw EGameEnd(),EGameEnd,是这么定义的
class EGameEnd : public Exception
{
public:
__fastcall EGameEnd()
: Exception("GameEnd"){};
};
然后转到这里
catch( EGameEnd &e )
{
}
catch( Exception &exception )
{
ErrLog.AddLog(exception.Message);
GameForm->GameEnd(false);
}
catch(...)
{
ErrLog.AddLog("不明中断");
GameForm->GameEnd(false);
}
}
__finally
{
GameForm->GameCSect->Release();
MainThread = NULL;
}
在然后就到
SysUtils.hpp里的
#pragma option push -w-inl
/* TObject.Destroy */ inline __fastcall virtual ~Exception(void) { }
#pragma option pop
之后就会弹出错误对话框EOSError System Error Code:6句柄无效
这什么问题?
游戏结束调用throw EGameEnd(),EGameEnd,是这么定义的
class EGameEnd : public Exception
{
public:
__fastcall EGameEnd()
: Exception("GameEnd"){};
};
然后转到这里
catch( EGameEnd &e )
{
}
catch( Exception &exception )
{
ErrLog.AddLog(exception.Message);
GameForm->GameEnd(false);
}
catch(...)
{
ErrLog.AddLog("不明中断");
GameForm->GameEnd(false);
}
}
__finally
{
GameForm->GameCSect->Release();
MainThread = NULL;
}
在然后就到
SysUtils.hpp里的
#pragma option push -w-inl
/* TObject.Destroy */ inline __fastcall virtual ~Exception(void) { }
#pragma option pop
之后就会弹出错误对话框EOSError System Error Code:6句柄无效
这什么问题?
#8
程序结束时,你为什么自己调用throw EGameEnd()啊?
#9
__finally
{
GameForm->GameCSect->Release();
MainThread = NULL;
}
这里是不是重复调用了GAMEEND:
#10
To : tom1995 (汤姆)
PostQuitMessage函数
是不是在
catch( EGameEnd &e )
{
}
中调用的?
PostQuitMessage函数
是不是在
catch( EGameEnd &e )
{
}
中调用的?
#1
在你跑出异常前,是不是把某个句柄关了,或删了,有没有源码
#2
很大的一个程序,游戏方面的,它在结束时抛出一个GameEnd异常,然后就出现这个提示
#3
比如说,用FileOpen打开文件,然后用FileClose关闭了文件,这时的文件句柄就是无效的。
#4
跟踪一下,在退出函数中的关闭或者处理的 Handle
#5
在结束的时候有一个函数
::PostQuitMessage(0);
然后就出现
Systerm error code: 6
::PostQuitMessage(0);
然后就出现
Systerm error code: 6
#6
执行PostQuitMessage的目的就是要退出程序,既然你的程序已经结束了,还执行PostQuitMessage干什么?
#7
我跟踪了一下,过程是这样
游戏结束调用throw EGameEnd(),EGameEnd,是这么定义的
class EGameEnd : public Exception
{
public:
__fastcall EGameEnd()
: Exception("GameEnd"){};
};
然后转到这里
catch( EGameEnd &e )
{
}
catch( Exception &exception )
{
ErrLog.AddLog(exception.Message);
GameForm->GameEnd(false);
}
catch(...)
{
ErrLog.AddLog("不明中断");
GameForm->GameEnd(false);
}
}
__finally
{
GameForm->GameCSect->Release();
MainThread = NULL;
}
在然后就到
SysUtils.hpp里的
#pragma option push -w-inl
/* TObject.Destroy */ inline __fastcall virtual ~Exception(void) { }
#pragma option pop
之后就会弹出错误对话框EOSError System Error Code:6句柄无效
这什么问题?
游戏结束调用throw EGameEnd(),EGameEnd,是这么定义的
class EGameEnd : public Exception
{
public:
__fastcall EGameEnd()
: Exception("GameEnd"){};
};
然后转到这里
catch( EGameEnd &e )
{
}
catch( Exception &exception )
{
ErrLog.AddLog(exception.Message);
GameForm->GameEnd(false);
}
catch(...)
{
ErrLog.AddLog("不明中断");
GameForm->GameEnd(false);
}
}
__finally
{
GameForm->GameCSect->Release();
MainThread = NULL;
}
在然后就到
SysUtils.hpp里的
#pragma option push -w-inl
/* TObject.Destroy */ inline __fastcall virtual ~Exception(void) { }
#pragma option pop
之后就会弹出错误对话框EOSError System Error Code:6句柄无效
这什么问题?
#8
程序结束时,你为什么自己调用throw EGameEnd()啊?
#9
__finally
{
GameForm->GameCSect->Release();
MainThread = NULL;
}
这里是不是重复调用了GAMEEND:
#10
To : tom1995 (汤姆)
PostQuitMessage函数
是不是在
catch( EGameEnd &e )
{
}
中调用的?
PostQuitMessage函数
是不是在
catch( EGameEnd &e )
{
}
中调用的?