异常那个东西一直不知道具体怎么用。
    什么时候用  try catch   throw exception 
  请高手指教一下。

解决方案 »

  1.   

    一般是通过将异常信息记录到日志,当程序出现异常后通过分析日志来确定问题所在.
    还可以利用异常来做判断,决定程序的运行步骤.
    增加友好性,可以捕获某些异常,比方nullPointer异常等,如果不捕获,有可能在页面直接显示出来,但可以通过异常捕获,进行友好的提示.
    异常作用非常多,远不止上面这几种,可根据实际情况灵活运用.
      

  2.   

    如果你的程序裡有明確會throw Exception的代碼,則一定得用try catch
    例如
    SimpleDateFormat sf = new SimpleDateFormat("");
    Date d = sf.parse("");
    因為 sf.parse("");會 throw ParseException,所以必須用 try catch來擷取錯誤,
    若你不想處理錯誤,則必須將此錯誤往外丟,讓使用你程序的人去處理(try catch)。另外一些沒有明確throw的Exception例如
    int i= 1/0;
    這個不會要求一定得用try catch,但如果你沒用try catch來處理,則程序到此就結束,不會繼續往下執行。throw和try catch其實不一定有直接關聯,你可以在catch裡面記下log之後將錯誤繼續往外throw,
    也可以單純的丟出一些Exception,
    例如
    if(a==0){
    throw new Exception("A不可以是0"); //or throw new MyException("A不可以是0");
    }
    只是你用的throw Exception,你的method就必須標明會有哪些Exceptiob被throw,
    就是宣告在method的throws。總結來說,try catch是用來擷取錯誤,然後處裡錯誤的因應步驟,強化程序的強度。
    throw 則是把問題丟出來,讓需要處理的程序去處理。
      

  3.   

    一篇不错的讲解Java异常的文章(转载)
    ----感觉很不错
    http://www.blogjava.net/freeman1984/archive/2007/09/27/148850.html
      

  4.   


    2楼已经说的很清楚了,
    假设你在一段代码A里肯定会产生Exception(一般是API的函数调用时),你必须得用try  catch 捕获并处理另一种情况是自己定义一个Exception时, 如果程序运行到某一个状态时得主动抛出一个异常,然后让调用它的程序去处理,这时得用 throw抛出
    如果还是不清楚,建议看一下 <<Think in java>>
      

  5.   

    建议在dao、BO等持久层的异常都用throws XXException,统一在业务层XXAction里用try{}catch(){}捕获,一般在捕获以后,记日志,重新转向另一个页面,在页面上进行提升给用户,回滚事务等处理
      

  6.   

    package org.lxh.exceptiondemo;public class ExceptionDemo01 {
    public static void main(String args[]) {
    int i = 10;
    int j = 0; System.out.println("==============计算开始==============="); try {
    int temp = i / j;
    } catch (Exception e) {
    System.out.println("出现了数学异常:" + e);
    } finally {
    System.out.println("不管是否异常,我都执行!!!!!");
    } System.out.println("===============计算结束======================"); }}package org.lxh.exceptiondemo;public class ExceptionDemo02 {
    public static void main(String args[]) {
    try {
    throw new Exception("人为抛着玩的!!!");
    }catch(Exception e) {
    e.printStackTrace();
    }
    }}package org.lxh.exceptiondemo;class Math {
    public int div(int i, int j) throws Exception {
    System.out.println("===========进行除法操作之前==============");
    int temp = 0;
    try {
    temp = i / j;
    } catch (Exception e) {
    throw e;// 抛出异常,交给throws
    } finally {
    System.out.println("===========进行除法操作之后===============");
    }
    return temp;
    }
    }public class ExceptionDemo03 { public static void main(String args[]) {
    Math math = new Math();
    try {
    int temp = math.div(10, 0);
    System.out.println(temp);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }
    仔细看看就知道了!