一、Java中常见包
1. 包的定义
package的简单定义如下:package是一个为了方便管理组织java文件的目录结构,并防止不同java文件之间发生命名冲突而存在的一个java特性。不同package中的类的名字可以相同,只是在使用时要带上package的名称加以区分。
2. 常用包
-
java.lang
:该包提供了Java语言进行程序设计的基础类,里面的Runnable接口和Object、Math、String、StringBuffer、System、Thread以及Throwable类需要重点掌握; -
java.util
:该包提供了集合框架、遗留的集合类、事件模型、日期国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组); -
java.io
:该包通过文件系统、数据流和序列化提供系统的输入与输出; -
java.net
:该包提供了实现网络应用与开发的类 -
java.sql
:该包提供了使用Java语言访问并处理存储在数据源(通常是一个关系型数据库)中的数据API; -
java.awt/javax.swing
:这两个包提供了GUI设计与开发的类,java.awt包提供了创建界面和绘制图形图像的所有类,而javax.swing包提供了一组 “轻量级” 的组件,尽量让这些组件在所有平台上的工作方式相同; -
java.text
:提供了与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。
二、Java中常见异常
1. java.lang.NullPointerException
空指针异常,调用了未经初始化的对象或者是不存在的对象。经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,图片创建时的路径错误,或者数组初始化后元素没有实例化等等;
2. java.lang.ClassNotFoundException
指定的类不存在,考虑一下类的名称和路径是否正确;
3. java.lang.IndexOutOfBoundsException
数组下标越界异常,查看调用的数组或者字符串的下标值是不是超出了数组的范围;
4. java.lang.NumberFormatException
字符串转换为数字异常,当试图将一个String转换为指定的数字类型,而该字符串确不满足数字类型要求的格式时,抛出该异常,例如字符型数据中包含了非数字型的字符:123#56
;
5. java.lang.IllegalArgumentException
方法参数错误,检查下方法调用过程中参数传递是否发生错误,可能是参数类型或者参数范围超过等;
6. java.lang.ArithmeticException
数学运算异常,例如除数为0就会抛出该异常;
7. java.lang.NoSuchMethodException/NoSuchFiledException
方法(文件)不存在异常,当程序试图通过反射来创建对象,访问(修改或读取)某个方法(文件),但是该方法(文件)不存在就会引发该异常;
8. java.lang.InterruptedException
被中止异常,当某个线程处于长时间的等待、休眠或其他暂停状态,而此时其它线程通过interrupt方法终止该线程时会抛出该异常;
9. java.lang.StackOverflowError
堆栈溢出错误,当一个应用递归调用的层次太深而导致堆栈溢出时抛出该错误。
三、try{ } catch{ } finally{ }
try{
......
//正常执行的代码(可能会出现异常)
}catch(Exception e){
......
//异常被捕获后执行的代码
}finally{
......
//无论正常执行还是出现异常之后都会执行的代码
}
1. try{ ... }
代码块出现异常,就不会执行出现异常语句后面的所有正常代码,这时异常后可能会被catch{...}
代码块捕获掉,比如上面catch声明的是捕获Exception
异常,那么所有Exception包括其子类
都会被捕获。异常一旦被捕获,就会执行catch里面的代码;如果异常没有被捕获,就会往外抛出,相当于这整个方法出现了异常;
2. 只要执行进了try/catch
代码块,后续finally{...}
中的代码永远都会被执行。执行完finally中的代码,如果异常被catch捕获就会执行finally后其它代码,否则就会继续往外抛出异常,不会执行后续代码;
3. return无论在哪里,只要执行到就会返回,但唯一一点不同的是如果return在try或catch
中,即使返回了,最终finally{...}
中的代码都会被执行。
四、throws和try catch的区别
-
1、throws是表明方法抛出异常,需要调用者来处理,如果不想处理就一直向外抛,最后会有jvm来处理;
-
2、try catch 是自己来捕获方法抛出的异常,然后在catch里面去处理;
一般情况下,使用try catch比较多,这样可以清楚地看到异常的原因或者自定义抛出异常。