社区
C++ Builder
帖子详情
===大家说说BCB编程中,try...catch的使用吧====
qiuwanbin
2005-09-20 03:06:14
以前用JB写java,总是一上来就先try....catch。
现在用BCB,发现同事们很少try....catch。纳闷.......
...全文
1621
14
打赏
收藏
===大家说说BCB编程中,try...catch的使用吧====
以前用JB写java,总是一上来就先try....catch。 现在用BCB,发现同事们很少try....catch。纳闷.......
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
有哥
2005-09-22
打赏
举报
回复
我只把它用在不想让系统自动处理的错误。
系统一接手,函数中下面的代码就全完了,有时需要做一些清理工作,所以就自己把它 try catch 起来,根据情况做相应的工作。
gzlcd
2005-09-22
打赏
举报
回复
想省事的话
try{
}catch(...){
}
保证一个不漏。
weill
2005-09-22
打赏
举报
回复
BCB本身就有默认的出错处理能力。
但是其处错处理也是有限的,一般来说,就给你报个错罢了,不做其它的了。
所以BCB就有了try语句。
我对java了解不是很多,只接触到一些网页的java,这类java因为本身建立在一个比较复杂的,面向不同用户的环境中,而且通过web页,常常代码下载不完整,也许没有bcb做出的程序运行在使用者的机器中来得稳定,所以try用得比较多。
BCB做出的程序多数语句,语法编译通过,在哪台机上都不可能出错,要是出错,那就是见了鬼了,呵呵。只有部分的语句因为不确定因素的存在而需要编程者去考虑。
比如最典型的就是CS架构中客户机对服务器进行数据操作,可能操作过程中主机当机,或是网络不通,等等。也有一些朋友用这个语句来测试如数据源是否存在,文件是否存在等等。所以try语句在BCB中还是必要的。
peter_lige
2005-09-22
打赏
举报
回复
还是在你没有把握的代码上加吧,或者在测试比较薄弱的功能上
william_zhao
2005-09-22
打赏
举报
回复
谁知到 哪里有 关于 CBuilder + Oracle 程序开发的好书给 介绍一本 谢谢了
LngDotin
2005-09-22
打赏
举报
回复
try
{
//如果出现错误....
}
cacth(...)
{
//对错误进行善后处理品
}
alloutoflove
2005-09-21
打赏
举报
回复
回楼上的,据我所知道的,java和BCB的异常处理应该都差不多吧, 局部异常可以选择性地决定是否再次抛出异常给其上一级处理.
qiuwanbin
2005-09-21
打赏
举报
回复
嗯,很详细。谢了,收了。
不过我主要问的是,java中与BCB中使用try..catch的区别。
楼主几位说的是,整个程序都被try...catch了。这个理由好象不充分。如果是这样,try...就没有存在的必要了。
希望能讨论一下,异常---是在局部被处理掉(抛出来),还是一层一层往上传播,有个度的问题,有些什么规则。 如果都等到最上层来捕获,调试可能会很不方便吧。
XBox360
2005-09-20
打赏
举报
回复
示例
在此例中,try 块包含对可能导致异常的 MyFn() 方法的调用。catch 子句包含仅在屏幕上显示消息的异常处理程序。当从 MyFn() 内部调用 throw 语句时,系统查找 catch 语句并显示 Exception caught 消息。
// Rethrowing exceptions:
using System;
class MyClass
{
public static void Main()
{
MyClass x = new MyClass();
try
{
string s = null;
x.MyFn(s);
}
catch (Exception e)
{
Console.WriteLine("{0} Exception caught.", e);
}
}
public void MyFn(string s)
{
if (s == null)
throw(new ArgumentNullException());
}
}
输出
发生以下异常:
System.ArgumentNullException
示例
此例使用了两个 catch 语句。最先出现的最特定的异常被捕获。
// Ordering catch clauses
using System;
class MyClass
{
public static void Main()
{
MyClass x = new MyClass();
try
{
string s = null;
x.MyFn(s);
}
// Most specific:
catch (ArgumentNullException e)
{
Console.WriteLine("{0} First exception caught.", e);
}
// Least specific:
catch (Exception e)
{
Console.WriteLine("{0} Second exception caught.", e);
}
}
public void MyFn(string s)
{
if (s == null)
throw new ArgumentNullException();
}
}
输出
发生以下异常:
System.ArgumentNullException
在前面的示例中,如果从特定程度最小的 catch 子句开始,您将收到此错误信息:
A previous catch clause already catches all exceptions of this or a super type ('System.Exception')
但是,若要捕获特定程度最小的异常,请使用下面的语句替换 throw 语句:
throw new Exception();
XBox360
2005-09-20
打赏
举报
回复
try-catch详细用法- -
在 catch 块中可以使用 throw 语句再次引发已由 catch 语句捕获的异常。例如:
catch (InvalidCastException e)
{
throw (e); // Rethrowing exception e
}
如果要再次引发当前由无参数的 catch 子句处理的异常,则使用不带参数的 throw 语句。例如:
catch
{
throw;
}
C# 程序员参考
try-catch请参见
C# 关键字 | 与 C++ 比较 | 异常处理语句 | throw | try-finally | 引发异常 | C. 语法
try-catch 语句由一个 try 块和其后所跟的一个或多个 catch 子句(为不同的异常指定处理程序)构成。此语句会采用下列形式之一:
try try-block
catch (exception-declaration-1) catch-block-1
catch (exception-declaration-2) catch-block-2
...
try try-block catch catch-block
其中:
try-block
包含应引发异常的代码段。
exception-declaration, exception-declaration-1, exception-declaration-2
异常对象声明。
catch-block, catch-block-1, catch-block-2
包含异常处理程序。
备注
try-block 包含可能导致异常的保护代码块。该块一直执行到引发异常或成功完成为止。例如,下列转换 null 对象的尝试引发 NullReferenceException 异常:
object o2 = null;
try
{
int i2 = (int) o2; // Error
}
catch 子句使用时可以不带任何参数,在这种情况下它捕获任何类型的异常,并被称为一般 catch 子句。它还可以采用从 System.Exception 派生的对象参数,在这种情况下它处理特定的异常。例如:
catch (InvalidCastException e)
{
}
在同一个 try-catch 语句中可以使用一个以上的特定 catch 子句。这种情况下 catch 子句的顺序很重要,因为会按顺序检查 catch 子句。将先捕获特定程度较高的异常,而不是特定程度较小的异常。
在 catch 块中可以使用 throw 语句再次引发已由 catch 语句捕获的异常。例如:
catch (InvalidCastException e)
{
throw (e); // Rethrowing exception e
}
如果要再次引发当前由无参数的 catch 子句处理的异常,则使用不带参数的 throw 语句。例如:
catch
{
throw;
}
请在 try 块内部只初始化其中声明的变量;否则,完成该块的执行前可能发生异常。例如,在下面的代码示例中,变量 x 在 try 块内初始化。试图在 Write(x) 语句中的 try 块外部使用此变量时将生成编译器错误:使用了未赋值的局部变量。
public static void Main()
{
int x;
try
{
x = 123; // Don't do that.
// ...
}
catch
{
// ...
}
Console.Write(x); // Error: Use of unassigned local variable 'x'.
}
有关 catch 的更多信息,请参见 try-catch-finally。
XBox360
2005-09-20
打赏
举报
回复
真的很少用try catch
nikita2000
2005-09-20
打赏
举报
回复
我一般用try...catch来处理一些用户常见的错误,比如,检测EDIT控件的TEXT是不是数值等等
double d1;
try
{
d1=Edit1->Text.ToDouble();
}
cacth(...)
{
Application->MessageBox("错误","输入有误!请输入一个有效的数值",mbOK);
}
编译失败
2005-09-20
打赏
举报
回复
Application->Run()整个都被try了,其他的有些不太可能出错的就懒得用。
alloutoflove
2005-09-20
打赏
举报
回复
BCB的应用程序本身就catch着Exception, 好多人在非必要情况下一般不做处理的吧?
BCB
库函数手册.rar
BCB
库函数手册.rar
BCB
库函数手册.rar
BCB
程序ACTIVEX
中
调用EXCEL
BCB
程序ACTIVEX
中
调用EXCEL
BCB
6.0
使用
教程案例源码
BCB
6.0
使用
教程案例源码,配合教材的程序实例,不过没有教材的电子版。
BCB
6.0 自动识别USB串口设备
BCB
环境下,根据windows消息,查询设备注册表,识别插入的USB串口设备,弹窗提示出入与移除的串口号。
bcb
6 设计师之路
介绍
BCB
6 的
使用
书籍,基于
BCB
6的开发就业指导类
C++ Builder
13,873
社区成员
102,696
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章