1、异常
异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。
Java提供了大量的异常类,这些类都继承自java.lang.Throwable类,Throwable有两个直接子类Error和Exception,接下来就对这两个直接子类进行详细讲解。
1.1、Error类——错误类
它表示Java运行时产生的系统内部错误或资源耗尽的错误,是比较严重的,仅靠修改程序本身是不能恢复执行的。
1.2、Exception类——异常类
它表示程序本身可以处理的错误,在开发Java程序中进行的异常处理,都是针对Excption类及其子类。
Throwable类有很多方法,其中比较常用的方法如下所示:
| 方法声明 | 功能描述 |
|---|---|
| String getMessage() | 返回此throwable的详细消息字符串 |
| void printStackTrace() | 将此throwable及其追踪输出至标准错误流 |
| void printStackTrace(PrintStream s) | 将此throwable及其追踪输出至指定的输出流 |
上述方法都用于获取异常信息,由于Error和Exception继承自Throwable类,所以它们都拥有这些方法
1.3、异常捕获
try代码块中编写可能发生异常的Java语句,catch代码块中编写针对异常进行处理的代码,当try代码块中的程序发生了异常,系统会将这个异常信息封装成一个异常对象,并将这个对象传递给catch代码块。Catch代码块中接收的参数类型必须是Exception类或其子类
try
{
// 程序代码
}catch(ExceptionName e1)
{
//Catch 块
}
1.4、throws/throw 关键字:
如果一个方法没有捕获到一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。
也可以使用 throw 关键字抛出一个异常,无论它是新实例化的还是刚捕获到的。
下面方法的声明抛出一个 RemoteException 异常:
// 捕获异常
class Test{
Test(){
// 1
try{
int a[] = new int[2];
System.out.println("Access element three :" + a[3]);
}catch(ArrayIndexOutOfBoundsException e){
System.out.println("Exception thrown :" + e);
}
// 2
try {
throw new RemoteException();
}catch (Exception e){
System.out.println(e);
}
}
// 3 :--> 修饰符 返回值类型 方法名([arg1,arg2,...])throws ExceptionType1..
// 具体看菜鸟教程 https://www.runoob.com/java/java-exceptions.html
public void deposit(double amount) throws RemoteException {
throw new RemoteException();
}
}
1.5、inally关键字
finally 关键字用来创建在 try 代码块后面执行的代码块。无论是否发生异常,finally 代码块中的代码总会被执行。在 finally 代码块中,可以运行清理类型等收尾善后性质的语句。finally 代码块出现在 catch 代码块最后,语法如下:
try{
// 程序代码
}catch(异常类型1 异常的变量名1){
// 程序代码
}catch(异常类型2 异常的变量名2){
// 程序代码
}finally{
// 程序代码
}
注意下面事项:
- catch 不能独立于 try 存在。
- 在 try/catch 后面添加 finally 块并非强制性要求的。
- try 代码后不能既没 catch 块也没 finally 块。
- try, catch, finally 块之间不能添加任何代码。
2、包
2.1 、包的定义与使用
Java中的包是专门用来存放类的,通常功能相同的类存放在相同的包中。在声明包时,使用package语句,具体示例如下:
包语句的语法格式为:
package pkg1[.pkg2[.pkg3…]];
例如,一个Something.java 文件它的内容
package net.java.util;
public class Something{
...
}
那么它的路径应该是 net/java/util/Something.java 这样保存的。 package(包) 的作用是把不同的 java 程序分类保存,更方便的被其他 java 程序调用。