Delphi如何抛出异常??千万别说用Raise

五维思考 2008-12-19 06:53:24
Delphi里有个抛出异常的函数我忘了叫啥了,要求如下:不用Raise,因为这个在调试状态下会出提示,也不用去改设置

try
抛出异常的那个函数
except
ShowMessage('有异常');
end;
...全文
3267 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
菜鸟在成长 2010-06-06
  • 打赏
  • 举报
回复
原来这样啊~
zhang_yan_bj 2010-01-26
  • 打赏
  • 举报
回复
^^
恒魂 2009-12-02
  • 打赏
  • 举报
回复
为了不引用 SysUtils 单元,减少程序体积,我是这样做的:

try
GetMem(FAddress, FileSize);
// if (FAddress = nil) then Abort; // SysUtils
if (FAddress = nil) then begin
FileSize := 0;
FileSize := 0 div FileSize; // Raise
end;
except
//申请内存失败
end;
僵哥 2008-12-19
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 3150379 的回复:]
引用 12 楼 lake_cx 的回复:
要abort?


对,就是它,哈哈,谢谢啊
[/Quote]
procedure Abort;

function ReturnAddr: Pointer;
asm
MOV EAX,[EBP + 4]
end;

begin
raise EAbort.CreateRes(@SOperationAborted) at ReturnAddr;
end;
de410 2008-12-19
  • 打赏
  • 举报
回复
Abort 是从 EAbort 过来的,可以激发 exception,其实质就是 Abort = RaiseException(),是一个不出现对话框的异常。所以 Abort 的行为和异常是一样的,其代码执行顺序也是follow异常的流程。
五维思考 2008-12-19
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 lake_cx 的回复:]
要abort?
[/Quote]

对,就是它,哈哈,谢谢啊
lake_cx 2008-12-19
  • 打赏
  • 举报
回复
要abort?
五维思考 2008-12-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 Storm2008 的回复:]
调试状态下出现异常都会出现提示吧?

我以前找过,不过没找到调试状态避免出现提示的方法
[/Quote]

通过设置是可以让IDE不提示的,方法:Tools->Debugger Options->Integrated debugging 打钩去掉

帮我想想那个函数吧
Storm2008 2008-12-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ZuoBaoquan 的回复:]
sorry,尚没见过。
不过,设置ExceptionClass为nil可以防止IDE出现异常对话框。
[/Quote]

多谢~
ZuoBaoquan 2008-12-19
  • 打赏
  • 举报
回复
sorry,尚没见过。
不过,设置ExceptionClass为nil可以防止IDE出现异常对话框。
五维思考 2008-12-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 unsigned 的回复:]
只有Raise,否则就只能触发特定的异常了。
不会是记着C++里面的throw了吧?

如果不是Delphi的,那倒可以用如API RaiseException.
[/Quote]

完了,僵哥一发话基本上就把我的问题枪毙了,但是在我印象中Delphi里有个方法的
Storm2008 2008-12-19
  • 打赏
  • 举报
回复
调试状态下出现异常都会出现提示吧?

我以前找过,不过没找到调试状态避免出现提示的方法
五维思考 2008-12-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 Storm2008 的回复:]
on exception
[/Quote]

这样的方法我知道,我要的是主动抛出异常的函数,就象Raise似的

如果大家看不懂我说的问题,这样好了,除了Raise还有哪些方法可以主动抛出异常的???
僵哥 2008-12-19
  • 打赏
  • 举报
回复
只有Raise,否则就只能触发特定的异常了。
不会是记着C++里面的throw了吧?

如果不是Delphi的,那倒可以用如API RaiseException.
五维思考 2008-12-19
  • 打赏
  • 举报
回复
楼上的哥们儿,别逗了
jjwang2004 2008-12-19
  • 打赏
  • 举报
回复
你自己写的代码是正确,当有异常程序会中断,你继续按F9就可以跳出提示了
Storm2008 2008-12-19
  • 打赏
  • 举报
回复
当发生特定异常时做什么事, 有些异常是不必用户干预的
try
DateTime := StrToDateTime(Edit1.Text);
...
except
on e: EConvertError do // 当发生转换失败时, 其它异常这里管不着
showmessasge( '目期格式无效 ')

on e: 其它可以处理的异常 do
...
end;


注意下 on e: Exception do 会响应所有的异常, 因为所有异常都是派生 Exception


copy来的,应该是你要的
Storm2008 2008-12-19
  • 打赏
  • 举报
回复
on exception

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧