异常处理
异常:程序运行时会遇到很多状况,例如:磁盘空间不足,做运算时,零不能做除数等。java提供了大量的异常类,而这些异常类都继承自java.lang.Throwable类。
Throwable类有几个常用方法:String getMessage()//返回异常消息字符串
String toString()//返回异常的简单信息描述
void printStackTrace()//获取异常类名和异常信息、异常出现的位置,输出在控制台上
try···catch(异常捕获) finally
格式:
try{
//程序代码块
}catch(异常类型(Exception类及其子类)e){
//对异常了类型的处理
}
有时候有些程序语句无论程序是否发生异常都要执行,就需要在try···catch语句之后加上一个finally代码块。
finally{
//要执行的代码
}
throws(抛出异常)
throws关键字写在方法声明后面,然后声明方法中发生异常的类型
修饰符 返回值类型 方法名(参数1,参数2·····)throws 异常类1,异常类2·····{
//方法体
}
下面列出一个例子把try···catch 和 finally结合起来使用
package com.company.www;
public class Main {
public static void main(String[] args) {
try {
int a=divide();
}catch (Exception e){
System.out.println("除数不能为0");
} finally {
System.out.println("圣诞快乐");
}
}
public static int divide()throws Exception{
return 5/0;
}
}
输出结果为:
除数不能为0
圣诞快乐
自定义异常
java允许用户自定义异常,但是自定义异常必须继承自Exception或其子类
// 自定义一个异常类继承自Exception
public class Divide extends Exception{
public Divide (){
super(); // 调用Exception无参的构造方法
}
public Divide (String message){
super(message); // 调用Exception有参的构造方法
}
}