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

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

try
抛出异常的那个函数
except
ShowMessage('有异常');
end;
...全文
3380 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,741

社区成员

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

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