Java中包、异常及异常处理 快来打我* 2022-02-22 15:34 286阅读 0赞 #### 一、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** 堆栈溢出错误,当一个应用递归调用的层次太深而导致堆栈溢出时抛出该错误。 [参考:Java常见异常总结][Java] #### 三、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比较多,这样可以清楚地看到异常的原因或者自定义抛出异常。 [Java]: http://www.cnblogs.com/ITtangtang/archive/2012/04/22/2465382.html
还没有评论,来说两句吧...