如果出错就直接返回空或者失败,而不是抛异常的方式,occi支持么?Y or N?

解决方案 »

  1.   

    OCCI里边用的就是异常的形式,你直接在代码里边catch就是了。
    异常是比较流行的处理方式。
      

  2.   

    不太喜欢使用异常这种处理方式,就比如函数bool func1(), bool func2(),如果不抛异常返回false表示失败,可以这么写:{
    if (func1())
    {
    }
    if (func2())
    {
    }
    }要是抛异常,就要这么写{
    try
    {
    func1();
    }
            catch(...)
    {
    }
    try
    {
    func2();
    }
            catch(...)
    {
    }
    }感觉很累赘,除非是必须要得到异常的原因,不然没多少必要使用异常……BerkeleyDb也是默认抛异常的,不过初始化的时候可以设置为不抛异常,改为返回失败。
    occi有没有类似的接口?如果没有就算了……
      

  3.   

    确实没有。
    看来楼主的代码风格还是沿袭C的风格。
    异常是个两刃剑,用好了以后,一样的无往不利。
    逻辑简单的化,大可以
    {
        try
        {
            func1();
            func2();
        }
            catch(...)
        {
        }
    }没有必要每个func都单独开一个try, catch。
    相反,你的if()那种风格得不断的重复
      

  4.   

    要是LS那样写,func1()出了异常,func2()就不执行了啊。竟然没有……
      

  5.   

    所以,你就有必要知道什么样的异常可以继续执行,什么样的,要果断中止。
    在旧的C代码里头,我们会看到大量的
    if(!...)
    {
       goto ReleaseMem;
    }
    if(!...)
    {
       goto ....;
    }
    ReleaseMem:
        doFreeMem();
        exit(-1);
      

  6.   

    所以才说是“除非是必须要得到异常的原因,不然没多少必要使用异常”啊。
    这里的异常种类就是一个SQLException,而我所作的应用根本不关心出异常的原因,失败就不做好了。
    如果有不抛异常的方法就好了……