1. 异常
- runtime error
- java程序执行过程中,出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息并将提交给java运行时系统,这个过程称为抛出(throw)异常。
- 当java运行时系统接到异常对象时,会找能处理这一异常的代码,并将当前异常对象交给其处理,这一过程称为捕获(catch)异常
- subclass of class Throwable : Error, Exception. subclass of class Exception: RuntimeException
- Error, 称为错误,java虚拟机生成并抛出,包括动态链接错误,虚拟机错误等等。程序无法对其进行处理
- Exception,所有异常的父类
- RuntimeException, 一类特殊的异常,出现频繁,处理麻烦,如果先是声明或者捕获会影响程序可读性,影响运行效率。所以由系统自动检测并交给缺省的异常处理程序。(不catch也能运行,只是会报错。 其他Exception子类都必须要catch)
- finally关键字内的代码不论是否抛出异常都必须执行。没有finally语句时,try中的语句一旦catch异常,try中剩下的语句不会再被执行。finally用来进行资源清除工作。关闭打开的文件,删除临时文件
- printStackTrace()方法,用来跟踪异常事件发生时堆栈的内容。
- catch(){},小括号内是捕获异常,大括号里面的内容是处理异常
- override方法,要抛出与原方法异常一致或者不抛出异常
- throw 和throws 区别。method() throws Exception{} try{ method()}catch( Exception e){ throw new Exception();}
- 先catch小异常,再catch大异常,否则catch小异常的时候会报错该异常已经被catch
2. File
- java.io.File类代表系统文件名(路径和文件名)
- \在java中是转意字符,所以string directory = "mydir1\mydir2"错误,正确写法是 string directory = "mydir1\\mydir2"(mydir1/mydir2) OR String separator = File.separator; String directory = "dir1" + separator + "dir2";推荐最后一种写法。linux系统下也可用
3.java.lang.Enum
- 用enum关键字定义一个类型,每次只能取其中一个值。 eg: public enum MyColor{ red, green, yellow} Mycolor m = Mycolor.red;
4. EhancedFor
- 在遍历数组时无法取出特定下标的值
- 在遍历collection时与iterator相比无法remove。其实enhancedfor在遍历collection时内部也是使用iterator