在真正的项目中肯定是需要异常处理的,你不可能让用户在用你的系统的时候看到xxx.xxx.NullPointerException然后一大堆错误信息吧,不够友好。异常这块是Java的重点,好好理解一下,尤其是自定义异常。

解决方案 »

  1.   

    自己写小的代码段处不处理异常个人觉得无所谓,我一般就catch了以后往屏幕上print,方便自己调试就好了
    不过有的人可能会说要养成“完美代码”的习惯,时刻留意可能会出错,引起程序崩溃的地方,并输出用户友好的错误提示这个嘛自己的代码就看你自己怎么想,工作中那就得看公司的代码规范喽。。
      

  2.   

    关于catch操作,永远记住,如果你不知道如何处理这个异常,你就让他抛出,让调用你的人去处理
    假设A方法调用B方法,好比A是B的领导,指派B去干活,工作中出了纰漏,哪怕不是B的责任(比如B又调用了C,C出错了)
    如果B没这个权限的话,他就该把问题上报给他的领导
    而不是私自把这个问题掩盖掉(catch且并不再throw出去)try{}finally{} B没权限处理,所以直接上报,但是呢,在上报前,先要把开始的工作收尾(finally)
    try{}catch(e){throw new AnotherException(e);}finally{} B没权限处理,所以直接上报,但是呢,在上报前,先要把开始的工作收尾(finally),同时领导只接受一种回报格式,所以要整理一下,比如new AnotherException(e)
      

  3.   

    平时写代码,里面最好写异常处理,逐渐养成好的习惯
    异常不是累赘,而是朋友,是一种优美的简化技术举个例子:
    Windows自带的 计算器,1除以0,会表示出【0不能做分母(或者类似的信息)】,这里肯定用了异常技术
    但是程序员们会想,我事前判断一下分母是不是0,分分秒的就解决了问题,用神马异常?请继续看:
    输入1000000000000000,然后按下乘号,按下等于,再按下乘号,再按下等于,这样反复几回
    就会出现【已经溢出(或者类似的信息)】,这里肯定用了异常技术
    我,我,我事前检查一下每个乘法左右两边的数,看看它们相乘会不会溢出……这个例子说明,当程序中有针对用户输入数据的处理时,
    需要尽可能的检验数据输入的正当性
    但是绝大多数输入数据的合法性,不太可能事前都一一考虑到
    这个时候,异常处理就会大显身手
    写异常处理反倒比较简单,代码变少了很多;试想一下,不写异常处理,不论你写几千几万行检查代码,都很容易疏漏掉一些特殊的情况。再举个例子:
    打开Windows自带的记事本,随便输入几个文字
    然后保存文件,指定文件名为con【注意,不带后面的.txt】
    在我的机器上,显示了【con这个名字已经被Windows预约了,请使用其他的名字】客页!我最开始写代码的时候,怎么知道con是Windows的预约名称不能使用?
    我最开始写代码的时候,怎么知道 用户 要把一个文件保存到 路径名超过 256 个字符的地方去?
    我最开始写代码的时候,怎么知道 用户 试着把一个大文件保存到一个没有多少剩余空间的U盘里!?如果IDE和文本编辑器里没有异常处理,估计程序员早就抓狂了……
      

  4.   

    异常处理是个好习惯,java提供了强大的异常处理机制,很方便的啊。
    一般是把异常跑抛出去让上一级处理、
      

  5.   

    我的观点和大家刚好相反。
    平时我很少写catch。不是说不做异常处理,而是因为相关的处理,都是通过框架解决。
    而且,我经历的绝大部分场合,对于异常处理来说,都是标准的:
    1 记录尽可能详细的日志信息,尤其是打印完整的stacktrace
    2 对事务进行回滚操作
    3 向用户报告比较简明易懂的错误消息而这些标准流程,完全只需要在框架层面进行配置即可,很少需要自己手写catch。当然,把catch当作条件判断,流程控制的情况除外。
      

  6.   

    异常肯定要认真写的,最好还要写明,最好还要在异常捕获里写上中文描述。
    这样的好处在于,如果出现bug之后,可以快速的定位是哪里出的问题。
    通常代码多了之后。逻辑可能会不清,或者也可能出现手误的情况,写异常对查错有好处。
      

  7.   

    关于catch异常很重要,尤其是自定义的异常捕获
      

  8.   

    自定义的异常捕获
    记录到log文件
    这个是必须的
      

  9.   

    RuntimeException 可以不处理,因为这多是由于你的程序没写好造成的。比如空指针异常、0作除数,这时你应该修改程序,保证调用时不会出现空的引用,保证进行除法运算时没除数不会为0。其它的异常要么抛出,要么自己处理。但是异常绝对不能在底层捕捉之后简单的打印,然后不对调用层产生影响
    简单一个例子,一个银行转帐的事务:
    1、转出帐号减去转帐金额
    2、转入帐号加上转帐金额。
    如果在“1、转出帐号减转账金额”的方法调用时,发生异常,但只捕捉不处理,程序继续执行”2、转入帐号加上转帐金额“的操作,则后果是转账成功后,转出帐号的金额不变,但转入帐号金额却增加了。
    这样的后果是很严重的。
      

  10.   

    其实,有的异常可以不抛。
    举一个简单的例子:现在给你一个字符串,要求你把它转化成整数!
    String s="-12s";
    int a=Integer.parseInt(s);
    你可以不做异常处理,但是执行到这里的时候,包装类Integer的方法paraseInt还是会抛出异常!!!
    有没有更好的办法?
    有!事先判断String s是否可以转换为int
    String s="-12s";
    if(s!=null&&(s.matches("-\\d++")||s.matches("\\d++"))){
    int a=Integer.parseInt(s);
    }else{
    System.out.println("s无法转换成int");
    }
      

  11.   

    不用很关心 我刚才是学的时候也是觉得很复杂 其实到后来就很简单了 eclipse会有非运行时异常的检测 你点玩自动加就行了。
    运行时异常就要凭经验手动加了
      

  12.   

    我们平时写js都是一堆try catch来处理