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设计的比较奇怪吧不抛可以),抛一个比父类的异常范围大的异常,或者抛一个范围比父类小的,或比父类多的异常都不行。
- 自定义异常类举例
-
- 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);
- }
- }
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); } }
-
- /**
- * 自定义异常类的使用
- * @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();
- }
- }
/** * 自定义异常类的使用 * @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(); } }