java学习笔记-EXCEPTION

    技术2025-08-18  15

    **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);    }     }     

    最新回复(0)