黑马程序员-学习日记_JAVA中异常

时间:2021-11-16 00:27:04

黑马程序员-学习日记


黑马程序员_JAVA中的异常 

 

------- android培训java培训、期待与您交流! ----------

 

一:异常:程序出现的不正常的情况就是异常。

    在java中异常结构体系的超类基类是Throwable;

二:Trowable:

    Error:指的是严重的问题,严重到影响程序的执行。这个问题,不做异常处理。

    因为一般出现的问题,处理不了。比如说:内存溢出。必须通过修改程序来解决。

       Exception:一般的程序问题,必须通过异常处理的。

三:main方法如何处理异常:

   1:main里面如果没有处理异常,那么jvm会采用默认处理方式。

   2:自己写代码处理

   A:try...catch...finally 捕获处理异常。

基本格式:

try

{

       可能出现异常的代码;

}

catch(异常对象)

{

       异常的处理方式;

}

finally

{

       释放资源;

}

变形方式:

try...catch

try...catch...catch...

try...catch...catch...fianlly

try...finally 没有对异常进行处理

 注意:在try对应多个catch时,catch中的异常的书写顺序:如果异常为平级的顺序可以打乱;如果异常存在着子父类关系,则异常书写顺序是将最子类的异常写在方法中的最上边。

B:throws 抛出异常

C:Throwable中的三个方法:

   String getMessage():获取异常的信息

   void printStackTrace():获取异常的堆栈信息

   String toString():或者异常字符串的描述,其实是覆盖了Object中的同toString方法;

四:自定义异常:在方法中用throw关键字类抛出

   自定义的异常要继承Exception或者RuntimeException;

   代码体现:

   class MyException extends Exception或者RuntimeException

   {

         private String message;

         MyException(){}

         MyException(String message){

                super(message);

         }

         MyException(String message,int num){

                super(message);

                this.num = num;

         }

         public int getNum(){

                return num;

         }

   }

五:RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。

   可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明。也就是说在自定义异常的时候如果继承的是Exception体系,在自定义方法上必须声明自定义异常。

六:throw和throws的区别:

   A:有throws的时候可以没有throw;但如果 throw抛得异常是Exception体系除RuntimeException外的,必须用throws在方法上声明。

   B:throws 后边声明的是异常类名;throw后边声明的是自定义异常对象名;

七:Exception和RuntimeException的区别

   A:Exception:一般性的错误,是需要我们编写代码进行处理的。

   B:RuntimeException:运行时异常,这个我们也不需要处理。

     其实就是为了让他在运行时出问题,然后我们回来修改代码。

     在用throws抛出一个的时候,如果这个异常是属于RuntimeException的体系的时候,我们在调用的地方可以不用处理。(RuntimeException和RuntimeException的子类)在用throws抛出一个的时候,如果这个异常是属于Exception的体系的时候,我们在调用的地方必须进行处理或者继续抛出。

八:finally代码块:

    finally永远被执行,除非退出JVM时,也就是先了执行System.exit(0);

九:finally,final,finalize的区别?

    final是一个修饰符,可以修饰类(修饰类后类变成最终类不可以被继承),变量(修饰后成为一个常量),和方法(被修饰后的方法不可以被复写);

    finally是异常处理里面的关键字,他其中的代码块永远被执行,除非先执行了System.exit(0);

       finalize是Object里的一个方法,他是垃圾回收器调用的方式。

       假如catch中有return语句, finally里中的代码会在return前执行。

十:可以同时抛出多个自定义的异常;在自定义异常时建议继承RuntimeException。

 

------- android培训java培训、期待与您交流! ----------  详细请查看:http://edu.csdn.net/heima/