java学习笔记-EXCEPTION

来源:互联网 发布:数据库的审计类型有 编辑:程序博客网 时间:2024/05/21 21:00

**int转换成String,在后面加一个空串""。
    String转换成int, Interger.parseint();
    Interger和Double类之间不能扩展,因为它们之间不是继承关系,而是兄弟关系。
 
**一个类的构造方法不可见的时候,有两种可能情况:
   1.该类里面的方法全是静态的,用方法时根本不需要对象;2.该类提供了一个静态方法返回对象。
 
Exception
 
 1  Throwable(运行时可能碰到的任何问题的总称,是Java的一个类。)
     ---->Error (非常严重的错误,系统不要求程序员处理,也处理不了)
     ---->Exception(从代码的角度是程序员可以处理的问题,也就是“异常或者例外”)
               异常是运行时概念    
                       ---> UncheckedExcepiton(RuntimeException)
                           程序员小心谨慎完全可以避免的异常,系统不要求程序员处理(可以不管),即编写代码时不用刻意去考虑,运行时如果出现此种异常,系统会处理(即系统之前就已经写好了这些异常的处理,如果发生则系统自己处理),运行终止后再由程序员调试更改代码。在Java API中为RuntimeException的子类的异常都是未检查异常。

                      例如: 3/0,数组下标越界,NullPointerException(空指针异常),类型转换异常
        ---------------------------------------------------------------------------------              
                        --->CheckedException(已检查异常)
                            系统要求必须处理 。
 
 2  异常的处理
     1.声明抛弃异常(消极的处理):
       throws :“抛弃”,写在方法的声明上,后面跟要抛弃的异常类型
        例如:public void method(···) throws ArithmeticException{····}
       异常产生时,责任可能并不在当前方法,向外抛弃可以让异常找到一个最佳的位置来处理,所以才用throws来抛弃异常。
       用throws向外抛弃异常过程中可以对异常类型进行扩展,但是不能缩小 。
       
       当代码出现异常时,代码不会向下执行,虚拟机(JVM)会将异常封装成相应的异常类的对象向外抛出。
        
throw: “抛出”,出现在方法的实现里,用来抛出异常对象,throw后面跟异常对象。  
                  
 @@@@      关于方法的返回值的两种情况:
            @@     1. 正常运行,
要求方法必须返回定义的返回类型的值。
                @@ 2. 非正常结束(出异常),方法返回的是异常对象。 
            
  方法覆盖: 名相同,参数相同,返回类型相同。应该注意:  
    1. 方法的访问权限不能更小。
   2.方法抛弃的异常不能更多,子类不能比父类抛出更多的异常!!!
       
     2. try--catch  (积极的处理):
         一个try语句后可以跟多个catch{};catch时子类先写,父类
         后写,否则如果父类写到前面,则所有的异常都被当作父类异常处理了,后面的对于具体的异常类型的处理则无法执行了。如果没有父子关系,先后无所谓。 
         @@@@@@@@@@@@;
         try{
          //可能会产生异常的代码
            1 **********;
            2 &&&&&&&&&;
            3%%%%%%%%;    
         }catch(Exception1 e1){
             4 ######## ;
         } catch(Exception2 e2){
             5 $$$$$$$$$$$$$$;
         }finally{   
          //不管有没有异常出现都要执行的代码   
          // 当try  catch 里出现了System.exit(0),finally 将不再执行。
          6 !!!!!!!!!!!!;
         }
          7 ^^^^^^^^^^^^^;
      第一种:如果1,2,3没产生任何异常,3执行后直接执行6,然后是7
      第二种:如果2产生异常 ,3不会被执行,直接跳出try{},
                   匹配第一个catch,和catch里定义的类型一致,执行4,
                   随后执行6,7;如果不一致,再匹配catch2,相同执行5,
                   随后执行6,7;如果和 catch2不同,语法错误。
 
           try{}catch(Exception e){}中,catch{}中一般不会写过多的代码,甚至是一行也不写,写也就是写一句“e.printStackTrace();”。
           打印异常堆栈信息:try{
                                    }
                                     catch(Exception e) {
                                        e.printStackTrace();//打印异常堆栈信息
                                      }
例如:
1  public class TestFinally{
2     public static void main(String[] args){
3           System.out.println(getNum(1));
4           System.out.println(getNum(0));
5           System.out.println(getNum(2));
6     } 
7     public static int getNum(int num){         //第一次传入1时,执行完第9行,因为下一句是return语 
8         try{                                               //句,而finally无论是否有异常都要执行的,所以程序转到
9             int k=2/num;                              //第14行,因为第14行没有返回,所以最后又执行第10句
10             return 1;                                  //最后的返回值是1,同理,传入0时,返回0,传入2时,
11         }catch(Exception e){                     //返回2。
12             return 0;                                  ***//只有当第10句为System.exit(0);时,才不转去执行
13         }finally{                                             //finally语句,直接结束程序。
14             if(num==2) return 2;
15         }
16     }
17   }
 
     3.   try   catch   finally
          try--------catch
          try--------finally,有些时候有些事情无论有没有异常都要处理,而异常又不在此处处理,
            即用try{}finally{}。此时不是为了处理异常,而是有些事情必须要处理。  
                 
       
笔试的常考题目:区分以下的字符串的含义:   
    1) throws  throw   Throwable
     2) final   finalize()   finally
     3) String   StringBuffer
  
    
4  自定义异常类型(业务异常)
    class MyException  extends Exception{ 
        public MyException(String str){
       super(str);
   }
    }     

原创粉丝点击