java08——异常、包、访问控制

319 阅读3分钟

1、异常

异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。

Java提供了大量的异常类,这些类都继承自java.lang.Throwable类,Throwable有两个直接子类Error和Exception,接下来就对这两个直接子类进行详细讲解。

image.png

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语句,具体示例如下:

image.png

包语句的语法格式为: package pkg1[.pkg2[.pkg3…]];

例如,一个Something.java 文件它的内容

    package net.java.util; 
    public class Something{
        ... 
    }

那么它的路径应该是 net/java/util/Something.java 这样保存的。 package(包) 的作用是把不同的 java 程序分类保存,更方便的被其他 java 程序调用。

2.2、包的定义与使用