Java 内存和异常

                                            java基础(内存、异常) 参考资料马士兵j2se教程

1、内存(见附图)



 

2、异常

1)异常类层次图

Throwable

      |

|————|

Error    Exception

                   |

             |—————————————|—————————|——————————|

 ClassNotFoundException        IOException          ..................             RuntimeException

                                                                                                                |

                                                              |—————————————|—————————|———————|

                                                     ArithmeticException          .................    IndexOutOfBoundsException

 

  • Error :虚拟机错误,程序处理不了
  • Exception :程序可以处理的。
  • RuntimeException:经常出的错误。可以不处理(不逮异常)如会不会数组越界啊、算数中除数可能会是零。一般可以不处理。编译也能通过。
  • 除RuntimeException以外的Exception:必须处理,如上面的IOException,要不编译通不过。一般就是jdk帮助文档中方法后加了throws 的方法。

 

2)内存的处理

  • 抛异常。(见附图)


  •  
  • 当抛出多个异常时,先逮小异常,再逮大异常。要不编译通不过。
  • 使用自定义异常,可以从Exception继承(必须逮)或从RuntimeException继承(可以不逮)。
  • 注意:继承某个原来抛出异常的类时,子类一定要抛出一模一样的异常或者干脆不抛(java设计的比较奇怪吧不抛可以),抛一个比父类的异常范围大的异常,或者抛一个范围比父类小的,或比父类多的异常都不行。
  • 自定义异常类举例
  • Java代码 复制代码
    1. public class MyFirstException extends Exception {   
    2. public MyFirstException() {   
    3. super();   
    4. }   
    5. public MyFirstException(String msg) {   
    6. super(msg);   
    7. }   
    8. public MyFirstException(String msg, Throwable cause) {   
    9. super(msg, cause);   
    10. }   
    11. public MyFirstException(Throwable cause) {   
    12. super(cause);   
    13. }   
    14. }  
    public class MyFirstException extends Exception {
    public MyFirstException() {
    super();
    }
    public MyFirstException(String msg) {
    super(msg);
    }
    public MyFirstException(String msg, Throwable cause) {
    super(msg, cause);
    }
    public MyFirstException(Throwable cause) {
    super(cause);
    }
    }
    
     
  • Java代码 复制代码
    1. /**  
    2. * 自定义异常类的使用  
    3. * @author new  
    4. *  
    5. */  
    6. public class TestMyException {   
    7. public static void firstException() throws MyFirstException{   
    8. throw new MyFirstException("\"firstException()\" method occurs an exception!");   
    9. }   
    10.   
    11. public static void main(String[] args) {   
    12. try {   
    13. TestMyException.firstException();   
    14. }    
    15. catch (MyFirstException e1){   
    16. System.out.println("Exception: " + e1.getMessage());   
    17. e1.printStackTrace();   
    18. }   
    19. }  
    /**
    * 自定义异常类的使用
    * @author new
    *
    */
    public class TestMyException {
    public static void firstException() throws MyFirstException{
    throw new MyFirstException("\"firstException()\" method occurs an exception!");
    }
    
    public static void main(String[] args) {
    try {
    TestMyException.firstException();
    } 
    catch (MyFirstException e1){
    System.out.println("Exception: " + e1.getMessage());
    e1.printStackTrace();
    }
    }
    
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值