zoukankan      html  css  js  c++  java
  • java 异常处理总结

    1.java异常分为两类:编译时异常(checked)和运行时异常(RuntimeException)。

    RuntimeException:这种异常时不确定的,不用抛出,编译可以正常通过,例如:1/0

    Checked:这种异常需要try—catch或者在方法中throw异常让上级来处理,例如:在程序中写文件操作函数

    2.异常处理原则和技巧

    1、避免过大的try块,不要把不会出现异常的代码放到try块里面,尽量保持一个try块对应一个或多个异常。

    2、细化异常的类型,不要不管什么类型的异常都写成Excetpion。

    3、catch块尽量保持一个块捕获一类异常,不要忽略捕获的异常,捕获到后要么处理,要么转译,要么重新抛出新类型的异常。

    4、不要把自己能处理的异常抛给别人。

    5、不要用try...catch参与控制程序流程,异常控制的根本目的是处理程序的非正常情况。

    6、捕获异常时先捕获小异常,再捕获大异常

    3.java7 新属性

           1.捕获多种类型的异常时,多种异常类型之间用竖线(|)隔开

           2.捕获多种异常时,异常的变量有隐式的final声明,所以不能对异常变量重新进行赋值

           例如:

    public class MultiExceptionTest{
        public static void main(String[ ] args){
            try{
                int a = Integer.parseInt(args[0]);
                int b = Integer.parseInt(args[1]);
                int c = a / b;
                System.out.println("输入两数相除结果:" + c);
            }catch(IndexOutOfBoundsException | NumberFormatException | ArithemticException ie){//(1)
                System.out.println(“程序发生了数组越界、数字格式异常、算数异常之一”);
                //捕获多异常时,异常变量默认有final修饰
                //所以下面代码有错
                ie = new ArithmeticException("test");//(2)
            }catch(Exception e){
                System.out.println("未知异常");
                //捕获一种类型的未知异常时,异常变量没有final修饰
                //所以下面代码完全正确
                e = new RuntimeException("test");//(3)
            }
        }
    }

     4、注意事项

    1.除非在try块,catch块中调用了退出虚拟机(system.exit(1);)的方法,否则不管在try块,catch块中执行了怎样的代码,出现怎样的情况,异常处理的finally块总被执行

     2.一旦在finally块中使用了return或throw语句,将会导致try块,catch块中的return,throw语句失效

     3.如果main方法不知道如何处理这种类型的异常,throws异常后会将异常交给JVM处理

     4.子类抛出的异常范围要比父类小

  • 相关阅读:
    PyQt5 控件学习(一个一个学习之QCommandLinkButton)
    多任务--线程
    PyQt5 控件学习(一个一个学习之QPushButton)
    PyQt5 控件学习(一个一个学习之QAbstractButton)
    再测我心中的事
    花了两天时间,整理了代码,封装了逻辑
    我现在发现,我写代码有严重的问题
    2014年8月2日0时13分22秒
    2014年8月2日15时13分4秒
    交警与货车司机
  • 原文地址:https://www.cnblogs.com/liuwanqiu/p/7802630.html
Copyright © 2011-2022 走看看