异常

1.异常分类


2.try-catch-finally处理异常

  • e.getMessage() 打印出栈信息
  • catch可以有多个,但父类放在子类下面,(先子后父)
  • JDK7之后,可以写到一个catch中,用“|”进行分隔
  • finally在最后一个catch后面
  • try里面的变量外部是无法进行访问的
  • finally语句的内容在try的return 语句之前执行,但是,return还是先执行,只不过是后打印而已
  • 如果不让finally语句执行,则要推出Java虚拟机(在try语句中加上system.exit(0);)
  • int i=m1();
    System.out.println(i);//10
    public void m1(){
    
        try{
            return i;//因为没有catch,所以不用在try的外面再写一个return
        }
        finally{
            i++;
            System.out.println("finally中的值为:"+i);//11
        
        
    }
    
    

3.final、finally、finalize的区别

  • final:可以修饰类,不能被继承,修饰的方法不能被重写,修饰的变量只能赋值一次
  • finally:是try的一个语体,不能单独使用,一定会执行
  • finalize:是object中的一个方法,当没有引用指向这个对象时,有对象的垃圾回收器在回收之前调用此方法

4.自定义异常

  • 继承Exception
  • 抛出一次非法用户名异常,throw new IllegalException("用户不小于6”)
  • 然后进行throws抛出
  • 再在主类中进行try-catch进行异常处理
  • class ExceptionTest01 extends Exception {
    	
    	private static final long serialVersionUID = 3977175901516018486L;
    
    	public ExceptionTest01() {
            super();
        }
    	public ExceptionTest01(String s) {
            super(s);
        }	
    }
    
  • class ExceptionTest02 {
    	public void Test(String name) throws ExceptionTest01{
    		if(name.length()<6) {
    			throw new ExceptionTest01("字节小于6");		
    		}	
    	}
    	
    }

     


5.throws与throw的区别

throws:用在方法声明的后面,跟的是异常类名,可以跟多个异常类名,用逗号隔开,表示抛出异常,由该方法调用者进行处理

throw:用在方法体中,跟的是一个异常类对象名,表示抛出异常由方法体内的语句处理

使用throws关键字并不是真正的处理异常,而是交给其调用者去处理,并不是说使用throws不好。而是使用throws将问题暴露出来由其调用者处理

posted @ 2019-03-28 19:54  一起学编程  阅读(88)  评论(0编辑  收藏  举报