try中写可能出现异常的语句,catch中处理

解决方案 »

  1.   

    try块中包含的是可能会出现异常的代码,
    加入你觉得你的这段代码可能有异常,你就可以把他放到try{}块中
    catch(Exception e){}块是紧跟着try{}块的,他的作用是报告try{}块中的异常,你可以在catch(Exception e){}块中干任何事情throws Exception 也是异常处理的一种方式,但是他不是显示的处理异常,而是把方法产生的异常交给类或者类的父类处理fillRect()就是  Fills the specified rectangle,他绘制一个矩形
    fillRect(int x, int y, int width, int height) 
    的参数 int x,int y表示这个矩形的左上角的坐标,int width,int height表示这个矩形的宽和高
      

  2.   

    try中写有可能抛出异常的语句
    catch写相应异常的处理方法例如:
    InputStreamReader ir = new InputStreamReader( System.in );
    BufferedReader in = new BufferedReader( ir );
    String s;
    try{
        s = in.readline();//此句可能抛出IO Exception
    }
    catch( IOException e ){
        System.out.println( "IO Error" );
    }
      

  3.   

    另外throws是用在方法的声明中的,它表示这个方法有可能出现什么样的异常,并且该异常不会有方法自己进行处理,而交给主调方法进行处理,例如:class Test{
        public void input() throws IOException {
            InputStreamReader ir = new InputStreamReader( System.in );
            BufferedReader in = new BufferedReader( ir );
            String s;
            s = in.readline();
            //此句可能抛出IOException,但是我在该方法中并不作处理
            System.out.println( "Input is " + s );
        }    public static void main( String args[] ){
            try{
                input();//调用上面的方法
            }
            catch( IOException e ){
            //上面的方法中产生的IOException在此处进行处理
                System.out.println( "IO Error!" );
            }
        }
      

  4.   

    try中写有可能抛出异常的语句
    --------------------------
    有些东东必须要你用try catch的,例如涉及到sql时。
      

  5.   

    大概是明白了一些但用到SQL的时候和异常有什么关系吗?
    我现在还没有用到
      

  6.   

    简单的说吧要对数据库操作的时候,就可能会出现SQLException但是,在除了操作数据库的时候会出现异常之外,java中还有很多地方会出现异常,比如说 NullPointException   IOException 等等
      

  7.   

    各种各样的错误都有可能发生, 硬件异常, 磁盘异常, 数组越界, 等等. 当这些异常发生在java的方法里时, 那么这个方法创建一个异常对象实例, 将它提交给Java runtime system. Exception event包括一些异常信息, 然后运行系统找到对应的处理方法, 这里有个名词非常好地描述它: Throwing an exception. Runtime system 找对应的异常处理程序, 如果找到, 那么立即去执行对应的代码, Catching the exception. 如果没有找到, 那么程序终止.
    这种异常处理机制带来的好处:
     Advantage 1: Separating Error Handling Code from "Regular" Code 
     Advantage 2: Propagating Errors Up the Call Stack 
     Advantage 3: Grouping Error Types and Error Differentiation 
    异常的类继承结构。
    java.lang.Object
      |
      +--java.lang.Throwable 这是一个类,不是接口
             |
             +--java.lang.Exception
    |
        +--java.lang.RuntimeException
    |
        +--java.lang.IndexOutOfBoundsException
    +--java.lang.ArrayIndexOutOfBoundsException    +--java.lang.StringIndexOutOfBoundsException
    1.  一个Exception的实例对象,或者是它的子类但不是RuntimeException类的实例对象,那么是Checked Exception. 换句话说,不是RuntimeExcetion类的实例也不是RuntimeException子类的实例,那么就是CheckedExcepiton,见上图的左箭头的类指向的类就是CheckedException类。
    2.对于在方法引用会出异常的代码, 必须1)写异常处理程序(catch); 2)在方
    法定义中写throws语句(specify),除非异常是RuntimeException。
    3. 扔出一个异常的语句是 throw new XXXException(); 不要在其它语句行
    定义异常实例对象,然后再扔出该对象,这样会给报错理解困难。
    4.一个方法定义了抛出异常,但不必在语句体中一定要扔出异常。
    5. throw语句后面不能再有可执行语句, 因为它们肯定不会被执行. 
    6. 在方法里不能抛出未在方法声明中定义的异常,除非是RuntimeException
    7. 覆盖方法不能扔出一个checked exception除非被覆盖方法也扔出该异常
    或者该异常的父类。.处理异常的语句结构是
    try {
    执行语句;
    } catch(Exception e) {
    异常处理程序;
    } finally {
    最后必须执行的语句;
    }
    finally语句一定会执行, 即使在catch语句中有return语句! 但除了System.exit()语句,或者cpu停止运行,系统异常终止等特殊情况。
    Specified handler&general handler. 在你的catch语句中, 如果你的错误异常有子类, 那么它就是general handler. 它除了处理它本身的异常实例外还处理它的子类实例, 所以general handler写在子类的前面会导致编译错误! 因为后面的子类catch根本得不到执行!
    catch语句只会执行一个!!!所以你不要指望执行一个catch后还会执行其它catch语句, 它只会执行下面的finally语句!!!另外, try 语句体中可能会出现的异常(checked exception)必须被捕获! 不允许没有catch语句与那些throw对应! 但是, 如果try语句体中什么异常也不会出现的话, 那么允许一个catch语句也没有!!!这一点对于那些RuntimeException特别有用, 因为它们不一定会发生, 系统(编译器)不强求必须有catch语句与它们对应. 而且, 在你的方法定义中, 也没有必要指定抛出那些RuntimeException, 例如ArrayIndexOutOfBoundsException, 不过声明他们也没关系! 编译器对于RuntimeException允许没有捕获!(try-catch-finally要求!)所以, 对于从RuntimeException继承下来的异常, 系统(编译器)不要求必须声明, 即使声明了, 也不要求必须处理!
    但是无论如何, try语句必须有catch或者finally对应, 如果没有catch, 那么必须有finally. 如果没有finally, 那么必须有catch.
    Runtime Exception的好处是显而易见的, 非常灵活, 程序员愿意写从RuntimeException继承下来的自己的异常处理类, 因为它们声明灵活, 处理也灵活, 但也带来许多不好的地方, 如果一个异常必须被知道, 被处理, 那么还是不采用RuntimeException好, 因为任何调用这些类和方法的调用者必须清楚, 使用这段代码可能出错, 您必须提供错误处理!!!这也正是checked exception的好处, 例如调用者必须知道磁盘已经满了, 没有空间供您使用!
    1. 需要额外注意的是从Throwable类继承下来的Error类,它的处理就象
    RuntimeException一样。
    2. 在有多个catch()语句与try相对应时,越general的Exception捕获越应靠
    后。否则编译错误。例如FileNotFoundException和IOException和
    Exception的 关系 
    3. finally语句一定会执行,除了,系统退出System.exit();电源关闭;线程
    死掉;在finally语句体中有一个异常出现。
    4.  throw语句和throws声明
    在程序中throw new IOException(“File not found.”);
    那么在语句体声明中必须有throws IOExcepion;与之对应,除非是RuntimeException(举例说明)
    5.  RuntimeException和Checked Exceptions的区别
    RuntimeException不需要程序员显式处理,例如ArithmeticException,
    throw new ArithmeticException时,方法体声明中不需要相应的throws 
    ArithmeticException与之配合,或者,真正抛出ArithmeticException的地
    方也不需要catch(ArithmeticException)。
    但checked Exception则必须声明,或者必须捕获。例如IOException.
    程序中throw new Exception()语句后,不应该有顺序执行的语句,因为它
    们根本得不到执行。
    对于系统中没有准确恰当的异常和应用所需的异常对应时,应该编写自
    己的异常,例如,
    RecordNotFoundException,UserAlreadyExistException等等。
    6.  异常类一般有两个构造器,一个是无参数的,一个是带有字符串参数的。
      

  8.   

    NullPointer异常很多情况下是由于程序员的粗心大意引起的。用TRY...Catch处理数据库操作时有一点必须注意的,一定要写上Finally字句,在里面释放数据库连接等资源,如果你老是忘掉的话,老板会不高兴的哦!
      

  9.   

    你好yunshiyu:    完整的违例控制块结构如下:
    try {
      // The guarded region:
      // Dangerous stuff that might throw A, B, or C 
    } catch (A a1) {
      // Handle A
    } catch (B b1) {
      // Handle B
    } catch (C c1) {
      // Handle C
    } finally {
      // Stuff that happens every time
    }
    违例准则
    用违例做下面这些事情:
    1)解决问题并再次调用造成违例方法;
    2)平息事态的发展,并在不重新尝试方法的前提下继续;
    3)计算另一些结果,而不是希望方法产生的结果;
    4)在当前环境中尽可能解决问题,并且将相同的违例重新“掷”出一个更高级的环境;
    5)在当前环境中尽可能解决问题,并且将不同的违例重新“掷”出一个更高级的环境;
    6)中止程序的执行;
    7)简化编码。若违例方案使事情变得更加复杂,那就会令人非常烦恼,不如不用;
    8)使自己的库和程序变得更加安全,这既是一种“短期投资”(便于调试),也是一种“长期投资”(改善应用程序的健壮性)。