对于抛异常这个处理,我有些迷糊
应该是有异常情况的时候就要抛异常吧?
但是抛异常应该从哪里开始抛?
位置在哪里?总是找不明白,每次都是试了好久才能找到位置。。
有没有什么规律什么的啊大家都给点意见吧 非常感谢

解决方案 »

  1.   

    我一般这样处理
    1.涉及外部程序的,比如接口,DLL等。加个try except。
    2.涉及查询的。在提交命令,返回结果的地方加。
    3.涉及转化的。
    ……
    其实好多了,写下来发现列不全。
      

  2.   

    首先抛异常一般都不需要我们写代码,例如delphi执行到除0时会自动抛出异常,我们要做的只是处理异常,例如报错。
    也并不一定是有发生异常就得处理。有的时候比如在循环的临界点调用了某一方法导致异常,但是并不影响程序继续运行(例如获得空的返回值,对调用的方法来说可能是异常,但是对程序逻辑来说是合法的),那么这个时候就可以不处理异常。
    一般处理异常也很简单,只要在可能出现异常的地方(例如除法或者创建对象的时候)用try语句包起来,后面带上catch或者finally就可以了。
      

  3.   

    一般是提交,创建,调用,赋值,涉及内存操作的等等
    没把握的就从头到尾try except end吧
    随着代码越写越多,越來越成熟后,慢慢的积累,你就会发现那些代码容易出错了
    但大多数异常可以交给系统抛出
      

  4.   


    procedure TForm1.ChangeBtnClick(Sender: TObject);
    var
      txtstr, txthex: string;
    begin
      if fileexists(OriginalEdit.Text) then
      begin
        assignfile(TxtFileInt,OriginalEdit.Text);      //文件变量与文件名关联
        reset(TxtFileInt);                             //打开文件
        if fileexists(GoalEdit.Text) then
        begin
          assignfile(TxtFileHex,GoalEdit.Text);        //文件变量与文件名关联
          rewrite(TxtFileHex);                         //打开文件      while not eof(TxtFileInt)do
         begin
           readln(TxtFileInt,txtstr);                 //读取源文件内容
            txthex:= Encode16(txtstr);                 //将源文件内容转化为16进制
            writeln(TxtFileHex,txthex);                //写入目标文件
          end;
         closefile(TxtFileHex);
        end;
        closefile(TxtFileInt);
      end;
    end;
    这是我的代码,异常出现在如果输入一个txtstr很大, 比如1111111111111111111,在转化为16进制的时候会出现‘1111111111111111111’is not a valid integer value.我应该在哪里抛异常?
      

  5.   

    mayyang610 和 kaikai_kk
    你俩的我都看了,好像看懂 好像也没怎么懂似的
    我列出来的这个代码,真就差从头到尾抛异常了,结果还是有异常。。这时候我该从哪里入手去考虑吧
      

  6.   

    增加判断,检查有效性,就能减少异常。
    比如:‘1111111111111111111’ 对于Integer不够,可以用Int64.