第九章总结 异常处理

异常概述

在java中,在运行时可能出现的错误称为异常。异常是在程序执行期间发生的事件,它中断了正在执行的程序的正常指令。

例子:

 运行的结果:

算法的异常 

异常的抛出与捕捉

抛出异常

异常抛出后,如果不做任何的处理,程序就会被终止

在主方法中实现将不是数字形式的字符串转换为int类型,程序运行时会报错误异常提示

例子:

 以上代码都会报错

捕捉异常

语法:

try{

//程序代码块

}

catch(Exceptiontype1 e){

//对Exceptiontype1的处理

}

catch(Exceptiontype2 e){

//对Exceptiontype2的处理

}

...

finally{

//程序代码块

}

上面错误的修改 都是运用上面的语法

第一个例子:

public class Baulk { 
 public static void main(String[] args) {
  try{int result =3/0;
  System.out.println(result);}
  catch(Exception e) {
   e.printStackTrace();
  }
  System.out.println("program over");
 }
}

第二个例子:

public class Baulk {//创建类Baulk
	public static void main(String[] args) {//主方法
		try {
		String str ="lili";//定义字符串
		System.out.println(str+"年龄是:");//输出提示信息
		int age = Integer.parseInt("20L");//数据类型转换
		System.out.println(age);//输出信息
		
}catch(NumberFormatException e) {
	System.out.println("数字格式异常");
}catch(ArithmeticException e) {
	System.out.println("算法异常");
}finally {
	System.out.println("程序结束");
}
}}

try-catch语句块


public class Baulk {    
    public static void main(String[] args) {
        try{

String str ="lili";//定义字符串

System.out.println(str+"年龄是:");//输出提示信息

int age = Integer.parseInt("20L");//数据类型转换

System.out.println(age);//输出信息

        System.out.println(result);}
        catch(Exception e) {
            e.printStackTrace();
        }
        System.out.println("program over");
    }
}



应用try-catch语句块对可能出现的异常语句进行异常处理
出现异常的代码用try-catch进行理try语句块中的语句发生异常时,程序就会跳转到ca语句块中执行,执行完catch程代后,将继续执行catch语句块后的其他代码,而不执行try语句常语后面代码。此可知,Java的异常处理是结构化的,不会因为一个异常影响整个程序的执行。
误区警示
有时为了编程简单会忽略 catch 语句后的代码,这样 try-catch 语句就成了一种摆设,一旦程序在运行过程中出现了异常,就会导致最终运行结果与期望的不一致,而错误发生的原因很难查找。因此要养成良好的编程习惯,最好在 catch 语句块中写入处理异常的代码。


finally语句块


完整的异常处理语句一定要包含finally语句,无论程序中有无异常发生,并且无论之前的try-catch语句块是否顺利执行完毕,都会执行finally语句。但是,在以下4种特殊情况下,finally块不会被执行:
 1:在finally语句块中发生了异常。
2:在前面的代码中使用了System.exit退出程序。

3:M程序所在的线程死亡。

4:关闭CPU。

java常见的异常类


在java中,提供了一些异常用来描述基础发生的异常

 自定义异常

在程序中使用自定义异常类:

1、在创建自定义异常类

2、在方法中通过throw关键字抛出异常对象

3、如果在当前抛出异常的方法中处理异常,可以使用try—catch语句块捕捉并处理,否则在方法中声明处通过throws关键字指明要抛出给方法调用者异常,继续进行下一个操作

4、在出现异常的方法的调用者中捕获并处理异常

例子:如何创建自定义异常

 例子:自定义异常的抛出与捕捉

public class Tran {//创建类
static int avg(int number1,int number2)throws MYException{//定义方法,抛出异常
	if(number1<0||number2<0) {//判断方法参数是否满足指定条件
		throw new MYException("不可以使用负数");//错误信息
	}
	if(number1>100||number2>100) {//判断方法中参数是否满足指定条件
		throw new MYException("数值太大了");//错误信息
}
	return(number1+number2)/2;//将参数的平均值返回
}
public static void main(String[] args) {//主方法
	try {//try语句块处理可能出现异常的代码
		int result=avg(52,156);//调用avg()方法
		System.out.println(result);//将avg()方法的返回值输出
	}catch(MYException e) {
		System.out.println(e);//输出异常信息
	 }
	}
}

在方法中抛出异常

使用throws关键字抛出异常

throws 关键字通常被应用在声明方法时,用来指定方法可能抛出的异常。多个异常可以使用逗号分隔

例子:指明异常起源于何处

 

 

使用throw关键字抛出异常

throw关键字通常用于方法体中,通常抛出用户自定义异常,并且抛出一个异常对象

通过throw抛出异常后,如果想在上一级代码中捕获并处理异常,则需要在抛出异常的方法中使用throws关键字在方法声明中指出要抛出的异常;如果要捕捉throw抛出的异常,则必须使用try—catch语句块

例子:创建自定义异常

例子:使用throw关键字捕捉自定义异常

 

 

运行时异常 

java中提供了常见的RuntimeException异常,这些异常可通过try—catch语句捕获

种类说明种类说明
NullPointerException空指针异常IllegaIArgumentException非参数异常
ArrayIndexOutOfBoundsException数组下标异常SecurityException安全性异常
ArithmeticException算术异常NegativeArraySizeException数组长度为负数异常
ArrayStoreException数组中包含不兼容的值抛出异常

 异常的使用原则

Java 异常强制用户去考虑程序的强健性和安全性。异常处理不应用来控制程序的正常流程,其主要作用是捕获程序在运行时发生的异常并进行相应的处理。编写代码处理某个方法可能出现的异常时。可遵循以下几条原则:
1· 在当前方法声明中使用try-catch语句捕获异常。
2·一个方法被覆盖时,覆盖它的方法必须抛出相同的异常或异常的子类。
3·如果父类抛出多个异常,则覆盖方法必须抛出那些异常的一个子集,不能抛出新异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值